【发布时间】:2016-06-18 18:05:25
【问题描述】:
正如标题所说,在某些情况下,我想在遍历向量时向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 的功能:
【问题讨论】:
-
for each (MyClass t_class in myVector)这是 c++ 吗?? -
那不是有效的 c++ 代码!
-
别介意这种不确定的语法,在迭代向量时将元素插入向量是没有意义的,因为
push_back可能会使所有现有的迭代器失效。 -
@foreknownas_463035818
#define in :现在是