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