タイトルが述べるように、ベクトルを反復しながら、ある場合には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;
}
EDIT:
:まあ、私はfor each
は、標準C++だったが、それは、Visual Studioの機能だと思われると思いました
Visual c++ "for each" portability
'各(myVectorでMyClassののT_CLASS)のための'これはC++ですか? – user463035818
これは有効なC++コードではありません! –
iffyの構文は気にする必要はありません。反復処理中に要素をベクトルに挿入するのは意味がありません。なぜなら、 'push_back'は既存のすべてのイテレータを無効にする可能性があるからです。 – pyon