#include <initializer_list>
template <class T> class initializer_list;
initializer_list对象中的元素永远是常量值const T,不能对initializer_list对象中元素的值修改
使用场景
1、可以使用初始化列表语法{}, 将stl容器初始化一系列值,容器类将initializer_list<T> 作为构造函数。
initializer_list类型元素必须相同,编译器将进行必要转换。
initializer_list类型来实现构造函数,在新建对象时,就可以使用{}列表初始化的方式了。
class FooVector
{
std::vector<int> content_;
public:
FooVector(std::initializer_list<int> list)
{
for (auto it = list.begin(); it != list.end(); ++it)
{
content_.push_back(*it);
}
}
};
class FooMap
{
std::map<int, int> content_;
using pair_t = std::map<int, int>::value_type;
public:
FooMap(std::initializer_list<pair_t> list)
{
for (auto it = list.begin(); it != list.end(); ++it)
{
content_.insert(*it);
}
}
};
int main(void)
{
FooVector foo1 = { 1, 2, 3, 4, 5 };
FooMap foo2 = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
return 0;
}