c++11特性之initializer_list
2015-11-03 21:55
323 查看
之前写了一个博客《 浅析C++中的初始化列表(区别赋值和初始化)》,讲述了类的构造函数使用初始化列表来初始化成员变量。
现在,撇开过往不谈,就谈一谈普通的变量赋值。即是我们要提到的initializer_list。
这同样是一个C++11的特性。
过往,我们这样给vector赋值:
需要感谢的是,C++11让你更方便。
这就是所谓的initializer list。
更进一步,有一个关键字叫initializer list
C++11允许构造函数和其他函数把初始化列表当做参数。
最后写一个类,可以对比一下,加深理解
这下子明白 {} 和 () 的区别了吧!!!
现在,撇开过往不谈,就谈一谈普通的变量赋值。即是我们要提到的initializer_list。
这同样是一个C++11的特性。
过往,我们这样给vector赋值:
std::vector v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4);
需要感谢的是,C++11让你更方便。
std::vector v = { 1, 2, 3, 4 };
这就是所谓的initializer list。
更进一步,有一个关键字叫initializer list
C++11允许构造函数和其他函数把初始化列表当做参数。
#include <iostream> #include <vector> class MyNumber { public: MyNumber(const std::initializer_list<int> &v) { for (auto itm : v) { mVec.push_back(itm); } } void print() { for (auto itm : mVec) { std::cout << itm << " "; } } private: std::vector<int> mVec; }; int main() { MyNumber m = { 1, 2, 3, 4 }; m.print(); // 1 2 3 4 return 0; }
最后写一个类,可以对比一下,加深理解
class CompareClass { CompareClass (int,int); CompareClass (initializer_list<int>); }; int main() { myclass foo {10,20}; // calls initializer_list ctor myclass bar (10,20); // calls first constructor }
这下子明白 {} 和 () 的区别了吧!!!
相关文章推荐
- c++11特性之initializer_list
- C++中Txt文件读取和写入(方法汇总)
- C语言实现小游戏(三) 3*3棋盘游戏
- C++重载复合赋值运算符、算术运算符和关系运算符
- 类型转换c++
- 透彻分析C/C++中memset函数
- C语言知识总结(二)基本数据类型与运算
- MeanShift算法C++解析(五)
- [转]程序开发基础学习二(C++ Google Style 命名规则)
- MeanShift算法C++解析(四)
- MeanShift算法C++解析(三)
- MeanShift算法C++解析(二)
- MeanShift算法C++解析(一)
- ——黑马程序员——C语言中构造类型—结构体(一)
- C语言知识总结(一)
- 编程思想之多线程与多进程--C++中的多线程
- C++plus 5.7
- C/C++基本数据类型大小及表示范围
- 一个简单的三子棋游戏(c语言实现)
- c++虚函数