作者:坐看末日之景L_170 | 来源:互联网 | 2023-02-01 23:15
我可以for .. in
使用初始化程序列表轻松模拟循环以进行读取访问
std::list 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 <
这打印:
2
1
0
我应该怎么做才能修改实际对象,就像在注释行中一样:
// x.push_back(42);
AnT..
20
我们从C中知道的基于指针的技巧可能如下应用
for (auto x : { &foo, &bar, &baz }) {
x->push_back(42);
std::cout <size() <
但是,这假设您实际上想要使用原始对象,而不是它们的副本.(您最初发布的代码实际上适用于副本.)
1> AnT..:
我们从C中知道的基于指针的技巧可能如下应用
for (auto x : { &foo, &bar, &baz }) {
x->push_back(42);
std::cout <size() <
但是,这假设您实际上想要使用原始对象,而不是它们的副本.(您最初发布的代码实际上适用于副本.)
2> Chris Drew..:
你可以使用std::reference_wrapper
:
for (std::list& x : {std::ref(foo), std::ref(bar), std::ref(baz)}) {
x.push_back(42);
std::cout <