十一:委托构造函数
C++11中,委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程,或这说自己的一些职责委托给了其他构造函数。
格式为:
class data
{
public:
//构造函数
data(int a,int b,int c):_a(a),_b(b),_c(c){}
//委托构造函数
data() :data(10, 20, 30){}
data(int a):data(a,10,10){}
int _a;
int _b;
int _c;
};
十二:定义容器对象
- 老式: vector<vector<int> > 里层右尖括号和外层尖括号右空格
- c++11:vector<vector<int>> 不含有空格
十三:列表初始化对象:
可以使用 {} 对对象进行初始化
vector<int>p{4,5,2,3,7};
for (int i : p)
{
cout << i << " ";
}
cout << endl;
deque<int>g{ 10,20,4,5,7 };
for (int i : g)
{
cout << i << " ";
}
十四: C++11新加的两种容器
- array容器:与内置数组相识,但大小是固定的,不能改变容器大小(不能删除和添加元素)只能修改元素,使用[ ]或at()
- forward_list容器:(单链表)
十五:c++11新加的两个函数:
- cbegin():获取容器第一个元素的迭代器,只可读(const_iterator)
- cend(): 获取容器最后一个元素的下一位,只可读(const_iterator)
十六: insert的返回值问题:
接收元素个数或范围的insert版本返回指向第一个新加入元素的迭代器,如果范围为空,insert会返回第一个参数
十七:emplace操作:
- emplace 指定插入
- emplace_font 头部插入
- emplace_back 尾部插入
emplace和 insert push_back push_font 的区别:
- emplace 插入元素时,是直接构造元素。(效率高)
- insert push_back push_font 会先生成临时对象,然后再压入容器中。
十八:shrink_to_fit操作:(vector、string、deque)
当不需要的内存过多时,该函数可以指出我们不需要任何多余的内存空间,但不一定会退回内存空间。
十九:string的数值转换
将其他类型的数据转化为string类型的数据
to_string()
int a = 10;
string p = to_string(10);//将整形转换为字符型
二十:=delete 定义删除的函数
在函数的参数列表后面加上=delete,可以定义为删除的函数
class son
{
public:
son(const son& p) = delete;//阻止拷贝
son& operator=(const son& p) = delete;//阻止赋值
son& operator[](int a) = delete;//阻止[]访问数据
};