一、概念
initializer_list是C++11中提供的一种标准库类型(ps:其实也是一个模板类),用于表示某种使用特定类型的值的数组。
initializer_list中的值都是常量值,无法修改。
二、提供的操作(以int型举例)
申明: initializer_list<int> lst;
也可以这样 initializer_list<int> lst{1,2,3,4};
还可以这样 initializer_list<int> lst = {1,2,3,4};
常见操作:
lst.size() lst.begin() lst.end()
三、用途之一
可以更方便的给vector、 string类型赋初始化值。
//c++98
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
//c++11,感谢c++11
vector<int> v2 = { 1, 2, 3, 4 };
四、用途之二
当一个函数的入参可能有多个参数时,可将入参定义为initializer_list,这样就灵活多了。
#include <iostream>
#include <vector>
using namespace std;
class MyNumber
{
public:
MyNumber(const initializer_list<int> &v) {
for (auto itm : v) {
mVec.push_back(itm);
}
}
void print()
{
for (auto itm : mVec) {
cout << itm << " ";
}
cout<<endl;
}
private:
vector<int> mVec;
};
int main()
{
MyNumber m({1, 2, 3, 4});
m.print();
return 0;
}