2
我有我的向量與類型的一些值Texture_Map這只是一個int
。C++ - 向量迭代器不可增量錯誤
我沒有擦除任何東西......我只是想在每個偶數迭代中插入一個值。
喜歡的東西: 如果我有這樣的載體[1,2,3,4,5]
而且我Texture_Map::TEXTURE_FLIP
是99
,那麼我最終的載體應該是:
[99,1,99,2,99,3,99,4,99,5]
第一insert()
後,我得到了「矢量迭代器不增量問題「錯誤。
代碼:
myVector.push_back(Texture_Map::TEXTURE_INIT);
for(unsigned int i = 0 ; i < m_max_pieces-2; i++)
myVector.push_back((Texture_Map::TextureID)i);
std::random_shuffle(myVector.begin(), myVector.end());
std::vector<Texture_Map::TextureID>::iterator it = myVector.begin();
for (it=myVector.begin(); it<myVector.end(); it++)
{
myVector.insert(it,Texture_Map::TEXTURE_FLIP);
}
謝謝!
您能否指出標準明確指出插入點處和之後的迭代器變爲無效的位置? – AlexD
@AlexD它只需要插入點前的那些保持有效,它並沒有聲明它們變得無效。然而,它並不要求它們保持有效 - 假設它們不是那麼好。 – Barry
毫無疑問,假設所有迭代器都是無效的更安全。我的意思是說,cppreference的引用不是100%準確地表示_「否則,只有插入點之前的迭代器和引用保持有效,過去的末端迭代器也會失效。 – AlexD