如何使用初始化列表循环修改元素
How to use initializer-list loops for modifying elements?
我可以使用读取访问
轻松模拟for .. in
循环
std::list<int> foo, bar, baz;
int main()
{
foo.push_back(3);
foo.push_back(2);
bar.push_back(1);
for (auto &x : {foo, bar, baz}) {
// x.push_back(42);
std::cout << x.size() << std::endl;
}
return 0;
}
此打印:
2
1
0
我应该做什么,以便我可以修改实际对象,就像在评论行中一样:
// x.push_back(42);
我们从C中知道的基于指针的技巧可能如下所示
for (auto x : { &foo, &bar, &baz }) {
x->push_back(42);
std::cout << x->size() << std::endl;
}
但是,这假设您实际上想与 ointer 对象一起工作,而不是它们的副本。(您最初发布的代码实际上可以使用副本。(
您可以使用std::reference_wrapper
:
for (std::list<int>& x : {std::ref(foo), std::ref(bar), std::ref(baz)}) {
x.push_back(42);
std::cout << x.size() << std::endl;
}
相关文章:
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- C++ std::vector语言 - 如何修改迭代器指定的元素?
- 打印/修改类对象的特定成员变量,其类定义列表 (STL) 包含的元素类型
- 如何修改所有文本元素;Visual Studio c++
- C++ 当容器在使用前被破坏/修改时发出警告(通过引用元素或迭代器使用)
- 如何使用初始化列表循环修改元素
- 为什么基于范围的循环不修改容器元素?
- 通过const_cast修改常量 std::vector 的元素<T>
- 修改 std::D efined 行为的元素?
- 从equal_range查询中筛选和修改 boost::multi_index 中的元素
- 如何转换一个类方法以修改另一个类的私有元素?
- 如何使用用户输入正确修改 2D 数组中的字符数组元素?专门用于电影院座位
- Armadillo C :如何使用来自另一个矩阵的多个元素(特别是在立方体结构中)修改矩阵的多个数组元素
- 如何在不知道大小的情况下编写过程来修改动态数组的元素和大小
- 如何修改 Kadane 算法以找出贡献最大总和的子数组元素?
- 如何在不修改现有函数的情况下反转数组中除第一个和最后一个元素之外的所有元素
- 迭代一个巨大的 std::vector of std::vectors 并修改元素
- C++ unordered_set指针允许修改元素
- 当需要修改元素时,另一种类似集合的数据结构是什么?
- 在std::map中修改元素键的最快方法是什么?