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
热门推荐
十月初一寒衣节,送寒衣4个规矩别忘,几点烧,在哪烧?别搞错了
崇祯皇帝后代的命运:探讨明朝末代皇室的存续
喝益生元能减肥吗?
35岁上班族必看:百花蜜、椴树蜜、洋槐蜜功效与区别对比
鸟类的洪水和气候变化适应
闰年的计算规则与日历调整对生活的影响分析
轮胎气嘴怎么换?更换轮胎气嘴的步骤有哪些注意事项?
彩票机构多措并举,倡导理性购彩
对资金来源的合法性,香港投资移民的审查标准是怎样的?
宋太祖赵匡胤的死因,真相究竟如何?
蔬菜是餐桌常客,但3种蔬菜却不建议多吃,你家厨房有吗?
痰液变奇怪了?看痰可识病
网约车驾驶员人证现场审核规范探讨
中国传统节日 | 十月初一·寒衣节
棉花做空的策略是什么?这种策略在市场中的应用效果如何?
如何办理遗产继承手续?这种手续的法律程序有哪些步骤?
“打一针”就能延长锂电池使用寿命 《自然》刊发复旦大学科研团队新发现
手机银行App个人信息合规行业测评报告:用户权利保障测评
数控编程G71指令详解:格式、参数与应用实例
细数汪伪政府授予的19位上将,以及他们的最终结局
身份证个人贷款申请指南:流程与所需材料详解
传奇投资家威廉·江恩:从棉花期货到3.5亿美元财富
买排骨时,挑“肉多”还是“肉少”的好?肉贩说出实情,建议了解
龙洋:珍贵文物的神秘传说
非小细胞肺癌(NSCLC):药物治疗策略与市场全景解析
巧克力含有咖啡成分吗?是咖啡的甜蜜伪装,还是独立的美味传奇?
益生元的功效
烛影斧声与金匮之盟!赵匡胤死因谜团,赵光义为皇权弑兄夺位?
2024年台湾地区出生人口为何下降?附台湾历年人口数据
财务绩效分析理论与实践报告