#include <iostream>
#include <vector>
/*
std::initializer_list轻量级模板类型可以进行任意相同类型的长度的数据初始化
size: 获取列表参数个数
begin/end:容器元素迭代操作
*/
// 用于普通函数
void Func(std::initializer_list<int> ls)
{
std::cout << "size:" << ls.size() << std::endl;
auto it = ls.begin();
for (; it != ls.end(); ++it)
{
std::cout << *it << std::endl;
}
}
void Test1()
{
// 初始化列表作为参数
Func({1, 2, 3, 4});
}
// 返回初始化列表,用户构造临时对象
std::vector<int> Func() {
return {1,2};
}
// 返回初始化列表,初始化常量引用
const std::vector<int>& Func() {
return {1,2};
}
// 用于类构造函数
class Test
{
public:
// 作用与构造函数参数
Test(std::initializer_list<int> ls)
{
auto it = ls.begin();
for (; it != ls.end(); ++it)
{
m_vec.push_back(*it);
}
}
void Func()
{
for (auto it : m_vec)
{
std::cout << it << std::endl;
}
}
private:
std::vector<int> m_vec;
};
void Test2()
{
Test t{1, 2, 3, 4};
t.Func();
}
int main()
{
Test1();
Test2();
return 0;
}
C++新特性initializer_list
于 2022-04-09 21:32:45 首次发布