c++ initializer_list

 

首先需要开启编译器C++11,按照如下步骤(codeblocks)

Setting-->Compiler 勾选下图红色方框的选项。

 

首先看看initializer_list 的作用,可以用大括号来初始化STL的容器,以及可以在for循环中来使用。

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     vector<string> v{"ab","cd"};
 8     vector<string>::iterator begin = v.begin();
 9     while(begin!=v.end())
10     {
11         cout << *begin++ << endl;
12     }
13     for(int i:{1,2,3})
14     {
15         cout << i << endl;
16     }
17     return 0;
18 }

 打印结果如下:

 

来看看正式的作用:

我们可以在一个函数的参数中声明initializer_list,这样,我们在调用这个函数时,可以直接给这个函数传递大括号即可。如下代码所示:

 1 #ifndef S_H_INCLUDED
 2 #define S_H_INCLUDED
 3 
 4 #include <vector>
 5 #include <initializer_list>
 6 #include <iostream>
 7 
 8 using namespace std;
 9 
10 template <typename T>
11 class S
12 {
13 private:
14     vector<T> v;
15 public:
16     S(initializer_list<T> l):v(l)
17     {
18         cout << "constructed with a " << l.size() << " -element lists" << endl;
19     }
20     void append(initializer_list<T> l)
21     {
22         v.insert(v.end(),l.begin(),l.end());
23     }
24     void append(T t)
25     {
26         v.push_back(t);
27     }
28     void print()
29     {
30         typename vector<T>::iterator begin = v.begin();
31         while(begin!=v.end())
32         {
33             cout << *begin++ << endl;
34         }
35     }
36 };
37 
38 #endif // S_H_INCLUDED

 

看看调用的代码:

 1 #include <iostream>
 2 #include "S.h"
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     S<int> s{10};
 9     s.append(1);
10     s.append({2,3,4,6,9});
11     cout << "begin to print()" << endl;
12     s.print();
13     return 0;
14 }

 

最后打印结果如下:

 

不要忘记了,头文件是 #include <initializer_list>

 

转载于:https://www.cnblogs.com/lucy-lizhi/p/7401690.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值