C++ 错误分析Segmentation fault (core dumped)之vector的错误赋值方法

初学C++的程序猿可能会觉得vector的下标操作能够加入元素,事实上不然:

vector<int> ivec;   // empty vector

for (vector<int>::size_type ix = 0; ix != 10; ++ix)

     ivec[ix] = ix; // disaster: ivec has no elements

上述程序试图在ivec中插入10个新元素,元素值依次为09的整数。可是,这里ivec是空的vector对象,并且下标仅仅能用于获取已存在的元素。

这个循环的正确写法应该是:

for (vector<int>::size_type ix = 0; ix != 10; ++ix)

     ivec.push_back(ix); // ok: adds new element with value ix


警告:必须是已存在的元素才干用下标操作符进行索引。通过下标操作进行赋值时,不会加入不论什么元素。仅能对确知已存在的元素进行下标操作,

一开始vector为空时,不能对其进行下标赋值。而要用push_back().假如你先设置其大小是可以的. v.resiz(10); v[0] =1

你可能感兴趣的:(debug心得,C++基础)