正如标题所说,在某些情况下,我想在迭代向量时向 std::vector
添加一个元素。使用以下代码,我收到错误“调试断言失败”。是否有可能实现我想做的事情?
这是我测试过的代码:
#include <vector>
class MyClass
{
public:
MyClass(char t_name)
{
name = t_name;
}
~MyClass()
{
}
char name;
};
int main()
{
std::vector<MyClass> myVector;
myVector.push_back(MyClass('1'));
myVector.push_back(MyClass('2'));
myVector.push_back(MyClass('3'));
for each (MyClass t_class in myVector)
{
if (t_class.name == '2')
myVector.push_back(MyClass('4'));
}
return 0;
}
编辑:
好吧,我认为 for each
是标准 C++,但它似乎是 Visual Studio 的一个功能:
原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议
从
std::vector
添加或删除项目的行为会使现有的迭代器无效。因此,您不能使用任何依赖迭代器的循环,例如for each, in
、 基于范围的for
、std::for_each()
等。您将不得不使用循环而是索引,例如: