初始化表initializer_list
时间: 2023-09-11 09:03:54 浏览: 93
init_list表示顺序表的初始化
initializer_list是C++11标准引入的一种数据结构,用于表示一个初始化列表。它可以用于函数参数、构造函数、赋值等场合。
初始化列表是由一系列用逗号隔开的值组成的,可以用花括号括起来。例如,{1, 2, 3}就是一个初始化列表,其中包含了三个整数1、2、3。
initializer_list的定义如下:
```cpp
template<class T>
class initializer_list {
public:
typedef const T* iterator;
typedef const T& reference;
typedef size_t size_type;
initializer_list() noexcept;
initializer_list(const T* p, size_t n) noexcept;
size_t size() const noexcept;
const T* begin() const noexcept;
const T* end() const noexcept;
};
```
使用initializer_list需要包含头文件<initializer_list>。
可以通过以下方式初始化initializer_list:
```cpp
std::initializer_list<int> il = {1, 2, 3};
```
在函数参数中使用initializer_list可以方便地传递一组值:
```cpp
void foo(std::initializer_list<int> il) {
for (auto it = il.begin(); it != il.end(); ++it) {
std::cout << *it << std::endl;
}
}
foo({1, 2, 3});
```
在类的构造函数中使用initializer_list可以方便地对成员变量初始化:
```cpp
class MyClass {
public:
MyClass(std::initializer_list<int> il) {
for (auto it = il.begin(); it != il.end(); ++it) {
vec.push_back(*it);
}
}
private:
std::vector<int> vec;
};
MyClass mc = {1, 2, 3};
```
总之,initializer_list是一个十分方便的工具,可以用于各种场合,使代码更加简洁、清晰。
阅读全文