【发布时间】:2012-03-06 21:00:34
【问题描述】:
它似乎不是(示例程序),但我可以确定吗?
// does resizing an STL vector erase/invalidate it's previous contents?
#include <stdio.h>
#include <vector>
using namespace std ;
void print( vector<int>& t )
{
for( int i = 0 ; i < t.size() ; i++ )
printf( "%d ", t[i] ) ;
puts("");
}
int main()
{
vector<int> t ;
t.resize( 12,9999 ) ;
print(t) ;
t.resize( 15, 10000 ) ;
print(t) ;
}
【问题讨论】:
-
“无效”是什么意思?
-
@Xeo:例如,在正确的程序中可能无法访问“无效的迭代器”。调整
std::vector的大小会使其所有迭代器无效。 (调整std::list的大小不会。) -
@Dietrich:我知道这一点,但是 OP 的代码没有显示任何这些,所以我想知道这里的“无效”到底是什么意思。也可能是 OP 认为以前的项目将被重置/擦除/任何东西。