c++11特性之initializer_list
2017-07-30 22:23
323 查看
http://blog.csdn.net/wangshubo1989/article/details/49622871
之前写了一个博客《 浅析C++中的初始化列表(区别赋值和初始化)》,讲述了类的构造函数使用初始化列表来初始化成员变量。
现在,撇开过往不谈,就谈一谈普通的变量赋值。即是我们要提到的initializer_list。
这同样是一个C++11的特性。
过往,我们这样给vector赋值:
2
3
4
5
1
2
3
4
5
需要感谢的是,c++11让你更方便。
1
这就是所谓的initializer list。
更进一步,有一个关键字叫initializer list
C++11允许构造函数和其他函数把初始化列表当做参数。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
最后写一个类,可以对比一下,加深理解
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
这下子明白 {} 和 () 的区别了吧!!!
之前写了一个博客《 浅析C++中的初始化列表(区别赋值和初始化)》,讲述了类的构造函数使用初始化列表来初始化成员变量。
现在,撇开过往不谈,就谈一谈普通的变量赋值。即是我们要提到的initializer_list。
这同样是一个C++11的特性。
过往,我们这样给vector赋值:
std::vector v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4);1
2
3
4
5
1
2
3
4
5
需要感谢的是,c++11让你更方便。
std::vector v = { 1, 2, 3, 4 };1
1
这就是所谓的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; }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
最后写一个类,可以对比一下,加深理解
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 }1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
这下子明白 {} 和 () 的区别了吧!!!
相关文章推荐
- C++11中新特性之:initializer_list详解
- c++11特性之initializer_list
- C++11特性(模板类 initializer_list)
- c++11特性之initializer_list
- c++11特性之initializer_list
- C++11特性--统一的初始化,std::initializer_list
- c++11新特性initializer_list模板
- C++11新特性:initializer_list
- 如何写cmake使其包含c++11特性 (-std=c++11如何写进cmakeList.txt)
- C++11-initializer_list
- C++11中initializer_list的用法
- C++11新特性之七:list-initialization
- c++11之initializer_list
- C++11中uniform initialization和initializer_list
- C++11中std::initializer_list的使用
- C++11 新特性 braced-init-list (List Initialization) 列表初始化
- C++11新特性:Lambda函数(匿名函数)
- 请使用LinkedList来模拟一个队列(先进先出的特性): 1) 拥有放入对象的方法void put(Object o) 2)取出对象的方法Object get() 3)判断队列当中是否为空的方法b
- Cocos中C++11新特性
- 跟Google学写代码--Chromium工程中用到的C++11特性