【发布时间】:2011-01-08 09:12:08
【问题描述】:
我读过《C++ 编程语言:特别版》
Don't use iterators into a resized vector
考虑这个例子。
vector< int >::iterator it = foo.begin();
while ( it != foo.end() ) {
if ( // something ) {
foo.push_back( // some num );
}
++it;
}
这有问题吗?向量调整大小后,循环条件中的 foo.end() 会不会前推1?
附:此外,如果向量为 x 个整数保留空间怎么办。如果 push_back 没有违反这个空间,它仍然是一个问题(我会假设如果 it.end() 指向一个过去包含某些东西的向量中的最后一个元素)。
【问题讨论】:
标签: c++ iterator containers