C++中的std::initializer_list用法详解
创作时间:
作者:
@小白创作中心
C++中的std::initializer_list用法详解
引用
CSDN
1.
https://blog.csdn.net/karl2000/article/details/136778759
现代C++中的std::initializer_list是C++11引入的一个特性,允许构造函数和其他函数以统一和简洁的方式接收初始化列表作为参数。std::initializer_list在处理需要多个同类型值的场景下尤其有用,如容器的初始化。以下是std::initializer_list的几种用法及相应的示例代码:
1. 容器的初始化
使用std::initializer_list可以方便地初始化STL容器。
std::vector<int> v = {1, 2, 3, 4};
std::set<int> s = {5, 6, 7, 8};
2. 自定义类型中使用initializer_list
可以在自定义类型的构造函数中使用std::initializer_list来接收多个初始值。
class MyContainer {
public:
MyContainer(std::initializer_list<int> list) : data(list) {
std::cout << "MyContainer initialized with " << data.size() << " elements." << std::endl;
}
private:
std::vector<int> data;
};
MyContainer c = {1, 2, 3, 4};
3. 函数中使用initializer_list
函数可以接受std::initializer_list作为参数,以统一的方式处理多个同类型参数。
void print(std::initializer_list<int> vals) {
for (auto val : vals) {
std::cout << val << " ";
}
std::cout << std::endl;
}
print({1, 2, 3, 4});
4. 迭代initializer_list
可以使用范围基于的for循环或迭代器来遍历initializer_list。
std::initializer_list<int> list = {1, 2, 3, 4};
for (int n : list) {
std::cout << n << " ";
}
std::cout << std::endl;
for (auto it = list.begin(); it != list.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
5. initializer_list的限制
std::initializer_list只能存储相同类型的元素。std::initializer_list内的元素不能被修改(它们是常量)。
std::initializer_list<int> list = {1, 2, 3, 4};
// list[0] = 10; // 错误:不能修改initializer_list中的元素
6. 在模板中使用initializer_list
std::initializer_list在模板编程中也很有用,允许创建接受不定数量参数的泛型函数或类。
template<typename T>
void printAll(std::initializer_list<T> list) {
for (const auto& item : list) {
std::cout << item << " ";
}
std::cout << std::endl;
}
printAll({1, 2, 3, 4});
printAll({"apple", "banana", "cherry"});
本文原文来自CSDN
热门推荐
中医教你如何通过心理调节治愈耳鸣
三拗汤治疗耳鸣效果如何?中医专家详解其应用与疗效
赴泰志愿者:中泰友谊的桥梁
中医诊断:五脏健康从七窍看出
四季养生,五脏调和:从中医角度看健康生活
Android 14权限管理重大更新:更严格隐私保护与合规要点
海南必买伴手礼:椰子系列大集合
椰子控必打卡:海南椰子及椰制品大集合
海南特色伴手礼:椰子制品选购全攻略
魏书生:中国教育改革的领航者
魏书生教育理念在盘锦开花结果
魏书生:用民主与科学引领教育管理革新
慢性肾脏病并发症的早期预警信号
冬季XL码防护服:选购要点与使用维护指南
XL女装尺码指南:从测量到选购的完整攻略
乙二醇基防冻液选购指南:性能特点、选购要点与使用注意事项
吉利星越防冻液更换全攻略:周期、步骤及注意事项
极寒地区防冻液更换攻略:从判断到更换全解析
冬季来临,教你DIY更换防冻液!
大堡礁&海南:环保旅游新潮流
马耳他群岛:全球最安全的海岛度假胜地
西沙群岛和涠洲岛,哪个更适合你?
国产首套3500mm卷取炉卷筒转毂研制成功,二重实现核心技术自主可控
中国二重研制8万吨模锻压力机,为C919提供关键设备
成都花舞人间:花海里的舞蹈盛宴
成都新津花舞人间:国庆打卡胜地,365天花海等你来
花舞人间冬日赏花攻略:门票优惠揭秘
麻婆豆腐:川菜名片香飘百年,从成都小食到日本国民美食
1862年诞生的麻婆豆腐:川菜走向世界的经典之作
甘油护肤,告别手指脱皮烦恼