将 push_back() 与基于范围的 for 循环一起使用
Using push_back() with range based for loops
如果我的理解还没有达到标准,请原谅,我仍在学习 C++,并且我来自解释型语言 (R)。
我的问题是关于使用向量作为基于范围的 for
循环的索引容器,在以下示例中:
//Declare
std::vector<int> a{5,1,6,9} ;
std::vector<int> b{0,3} ;
//Reserve Memory
a.reserve(100) ;
//Loop & Modify
for(int i : b){
a.push_back(a[i] + 400) ;
}
我的问题是,这会以某种方式导致未定义的行为吗?
只要 b
包含 a
的有效索引,您的代码就完全没问题。
如果您修改容器并使用范围进行迭代,则会出现问题,例如这将是无效的:
for (auto e : a)
{
a.push_back(...);
}
但是你没有这样做所以你没事。
如果我的理解还没有达到标准,请原谅,我仍在学习 C++,并且我来自解释型语言 (R)。
我的问题是关于使用向量作为基于范围的 for
循环的索引容器,在以下示例中:
//Declare
std::vector<int> a{5,1,6,9} ;
std::vector<int> b{0,3} ;
//Reserve Memory
a.reserve(100) ;
//Loop & Modify
for(int i : b){
a.push_back(a[i] + 400) ;
}
我的问题是,这会以某种方式导致未定义的行为吗?
只要 b
包含 a
的有效索引,您的代码就完全没问题。
如果您修改容器并使用范围进行迭代,则会出现问题,例如这将是无效的:
for (auto e : a)
{
a.push_back(...);
}
但是你没有这样做所以你没事。