【发布时间】:2014-02-22 22:18:51
【问题描述】:
我写了一个非常简单的代码来遍历一个向量。问题是这个向量在每个迭代器上都会改变它的大小。
向量是类的私有变量。代码是这样的:
std::vector<boost::filesystem::path> headerVector;
循环是同一类的成员函数内的for循环。
似乎 for 循环读取了一次向量大小,然后迭代直到达到该数字,但向量在某些迭代中增加了它的大小(不是无限的)。
如何让它迭代直到 IT 的值和向量的当前大小相等?
代码如下:
void HeaderObtainer::mapIterator( boost::filesystem::path aPath )
{
bool exist;
std::vector<boost::filesystem::path>::iterator it; //iterator for boost path.
for (it = headerVector.begin(); it!= headerVector.end(); it++) // For each?
{
aPath = *it;
exist = HeaderSources::fileExists( aPath ); //Returns bool.
fileSearch ( exist, aPath );
}
}
谢谢!
【问题讨论】:
-
添加元素后,向量的迭代器不一定有效。
-
你的意思是有另一个线程正在修改你的向量
headerVector而你正在迭代它? -
你可以使用索引来代替
iterator。 -
@StephaneRolland:我认为
fileSearch可能会为headerVector添加新路径。所以单线程。