EffectiveCpp0x6
Customizing new and delete[toc] Understande the behavior of the new-handler.当operator new无法满足内存分配需求时,会抛出异常,用户可以通过调用set_new_handler来设置异常处理函数。 MSVC声明: 12_EXPORT_STD using new_handler = void(__CLRCALL_PURE_OR_CDECL*)();_EXPORT_STD extern "C++" _CRTIMP2 new_handler __cdecl set_new_handler(_In_opt_ new_handler) noexcept; 这段代码定义了new_handler类型为函数指针,并声明了set_new_handler函数,noexcept,表示不抛出异常 set_new_handler的参数是个指针,指向operator new无法分配足够内存时该被调用的函数。其返回值也是个指针,指向set_new_handler...
洛谷题单——数组
[toc] P1428 小鱼比可爱 12345678910111213141516171819202122#include <iostream>const int N = 105;int a[N];using namespace std;int main(){ int n; cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 0; i < n; i++) { int count = 0; for (int j = 0; j < i; j++) { if (a[i] > a[j]) count++; } cout << count << " "; }} P1427 小鱼的数字游戏 看到的优秀题解,方便你快速过一遍知识:一个红题带你了解绿(黄)题知识点 - 洛谷专栏...
EffectiveCpp0x6
Templates and Generic ProgrammingC++ template 机制自身是一部完整的图灵机C Turing-complete) :它可以被用来计算任何可计算的值。于是导出了模板元编程(template metaprogramming) ,创造出“在C++编译器内执行并于编译完成时停止执行”的程序。 [toc] 41. Understand implicit interfaces and compile-time polymorphism.面向对象编程世界总是以显式接口(explicit interfaces) 和运行期多态(runtime polymorphism)解决问题。 模板反倒是反倒是隐式接口(implicit interfaces)和编译期多态(compile-time polymorphism)移到前头了。 来看以下例子: 12345678910class Widget {public: Widget(); virtual ~Widget(); virtual std::size_t size() const; ...
EffectiveCpp0x6
Inheritance and Object-Oriented Design[toc] 我:请问什么是面向对象原则 ChatGPT:SOLID 是面向对象设计中的五个基本设计原则的首字母缩写,它们是: 单一职责原则(Single Responsibility Principle,SRP): 每个类或模块应该只有一个改变的理由,即一个类应该只负责一个职责。这个原则指导我们将系统分解为小而独立的部分,每个部分都有自己的职责,使得代码更加清晰、可维护和可重用。 开放-封闭原则(Open/Closed Principle,OCP): 软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。这意味着当需要改变系统的行为时,不应该修改已有的代码,而是应该通过扩展现有的代码来实现新的行为。这个原则鼓励使用抽象和多态性来实现系统的灵活性和可扩展性。 里氏替换原则(Liskov Substitution Principle,LSP):...
EffectiveCpp0x5
Implementation[toc] 26. Postpone variable definitions as long as possible.只要你定义了一个变量而其类型带有一个构造函数或析构函数,那么当程序的控制流(control flow) 到达这个变量定义式时,你便得承受构造成本;当这个变量离开其作用域时,你便得承受析构成本。即使这个变量最终并未被使用,仍需耗费这些成本,所以你应该尽可能避免这种情形。 考虑一个加密函数当抛出一个异常时(如加密字符串长度过短),则该encrypted字符串将未被使用: 1234567891011121314// this function defines the variable "encrypted" too soonstd::string encryptPassword(const std::string& password){ using namespace std; string encrypted; if (password.length() <...
EffectiveCpp0x4
[toc] Designs and Declarations18. Make interfaces easy to use correctly and hard to use incorrectly 欲开发一个“容易被正确使用,不容易被误用”的接口,首先必须考虑客户可能做出什么样的错误。 类型系统是我们的同盟国 通过一下设计可以避免由于不同国家日期表示方式的区别而产生的错误。 1234567891011121314151617struct Day { struct Month { struct Year { explicit Day(int d) explicit Month(int m) explicit Year(int y) :val(d) {} :val(m) {} :val(y){} int val; ...
python爬虫0x2
Python爬虫[toc] 正则表达式语法该表格可能出现显示错误,建议直接看课件 操作符 说明 实例 . 表示任何单个字符 [] 字符集,对单个字符给出取值范围 [abc]表示a、b、c,[a‐z]表示a到z单个字符 非字符集,对单个字符给出排除范围 abc表示非a或b或c的单个字符 * 前一个字符0次或无限次扩展 abc* 表示ab、abc、abcc、abccc等 + 前一个字符1次或无限次扩展 abc+ 表示abc、abcc、abccc等 ? ? 前一个字符0次或1次扩展 abc? 表示ab、abc \ 左右表达式任意一个abc def...
天梯赛
题目0x1主要记录解题中一些stl的函数 [toc] 字符串处理使用string标准库 当使用getline(cin,string)时,如果前面有cin>>,注意吸收换行符。 substr(a,b); 返回a开始的b个字符 erase(a); earse(a,b) 移除a之后的字符; 移除a开始的b个字符 find(“a”,b); 从前向后查找a第一次出现的位置, b(可选)查找开始的下标 ...
python爬虫0x1
Python爬虫[toc] request库123456789101112131415import requestsr = requests.get("https://www.icourse163.org")print(r.status_code) #状态码200,访问成功print(type(r)) #<class 'requests.models.Response'>#编码方式print(r.encoding) #charset字段获得,不存在默认为ISO-8859-1print(r.apparent_encoding) #备选编码,通过分析内容推断出编码r.encoding = 'utf-8' #设置编码print(r.text) #html内容print(r.headers) #http请求头print(r.content) ...