- noexcept关键字
C++11引入,替代之前的throw;两个作用:指出函数不会发生异常;用作运算符,判断操作数(表达式)是否可能引发异常。
- 右值引用(&&)
C++11引入,如果能够对表达式取地址,则为左值;不能取,则为右值。
int& A=a;//左值引用,正确
int& A=1;//错误。1为右值
int&& A=1;//正确,右值引用
参考:https://www.jianshu.com/p/d19fc8447eaa
- =default和=delete
C++11引入,以构造函数为例:
copy()=default;//使用默认的构造函数
copy()=delete;//删除构造函数,不使用构造函数
- chrono
C++11引入的时间处理库,包括:system_clock;steady_clock;high_resolution_clock。high_resolution_clock为例:
std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now();
/*监测执行时间的程序段*/
std::chrono::high_resolution_clock::time_point end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, std::milli> fp_ms = end - start;//计算用时
参考:https://www.cnblogs.com/zlshmily/p/10058427.html
- size_t
目标平台下最大可能的数组尺寸。例如:X64下,int数组为4字节,size_t为8字节。
- 运算符重载
运算符重载:返回值类型 operator 重载运算符 (参数列表);包括成员函数形式和非成员函数形式。
非成员函数形式如下:
成员函数如下(省去左操作值,通过this指针实现):
*参考:https://www.runoob.com/cplusplus/cpp-overloading.html
- this指针
this指针是类中所有成员函数的隐形参数,每一个对象都能通过this指针访问自己的地址。this指针只能用于成员函数,不能用于全局函数、静态成员函数、友元函数(友元函数不是类的成员)。
return* this:在类的非静态成员函数中返回类对象本身。
*参考:https://www.cnblogs.com/yuwanxian/p/10988736.html
- const函数
const成员函数可以访问类内的const变量和普通成员变量,但是不能够进行变量的修改。
const对象只能访问const变量、const成员函数;避免其他函数对const对象进行修改。
参考:https://www.cnblogs.com/curo0119/p/8534299.html
- 移动构造
C++11引入,通过右值引用实现移动构造,达到对资源的有效利用。
*参考:https://www.cnblogs.com/zl1991/p/8480803.html
- vector和list
vector类似数组,占用连续的内存块,便于随机读取,不便于插入删除;
list利用双向链表实现,非连续内存,便于插入删除,不便于随机读取。
- 迭代器--iterator
迭代器类似指针,STL的一种通用方法。模板使得算法独立于存储的数据类型,而迭代器使算法独立于使用的容器类型。以vector为例:
vector<double> scores;
vector<double>::iterator pd=scores.begin();
//auto pd=scores.begin();
*pd=22.3;
++pd;
- STL容器的一些方法
STL提供了一组表示容器、迭代器、函数对象和算法的模板。
size();返回容器中的元素数目;
swap();交换两个容器中的内容;
begin();返回一个指向容器中第一个元素的迭代器;
end();返回一个表示超过容器尾的迭代器/最后一个元素的下一个;
erase(scores.begin(),scores.begin()+2);删除容器中的元素。接受两个迭代器参数,第一个迭代器指向区间的起始处,第二个指向区间终止处的后一个位置。例:删除第一个和第二个元素。
insert(old_v.begin(),new_v.begin(),new_v.end());向容器中插入元素;接受三个迭代器参数,第一个指定插入位置,二三指定插入区间。
sort();对容器进行大小值排序。接受指向容器的第一个与元素的迭代器和指向超尾的迭代器作为参数。
- RAII
RAII:Resource Acquisition is Initialization,资源获取即初始化。C++中用于资源管理的一种有效方法。举例如下:
构造与析构函数:创建一个对象的时候,自动调用构造函数,当对象超出作用域自动调用析构函数,将资源和对象的声明周期绑定。
智能指针:实现自动的内存管理,不需要手动delete。
lock_guard():mutex的一种管理方法,不需要手动unlock。
参考:https://www.cnblogs.com/jiangbin/p/6986511.html
- mutex
*参考:https://www.jianshu.com/p/4a44f1e46e48