c++ vector insert问题! 为什么一用insert就出错

2025-04-28 16:16:06
推荐回答(3个)
回答2:

1、insert是stl的容器插入函数。不同容器有不同用法。
vector容器的insert函数定义说明,vector 的insert函数用三种用法,分别是
iterator insert (iterator position, const value_type& val);
参数:迭代器插入位置,值地址引用内容。返回:迭代器
void insert (iterator position, size_type n, const value_type& val);
参数:迭代器插入位置,元素个数,值地址引用。返回:空
void insert (iterator position, InputIterator first, InputIterator last);
参数:迭代器插入位置,待插入起点迭代器,待插入终点迭代器。返回:空
2、例程:

// inserting into a vector
#include 
#include 
int main ()
{
 std::vector myvector (3,100);
 std::vector::iterator it;
 it = myvector.begin();
 it = myvector.insert ( it , 200 );
 myvector.insert (it,2,300);
 // "it" no longer valid, get a new one:
 it = myvector.begin();
 std::vector anothervector (2,400);
 myvector.insert (it+2,anothervector.begin(),anothervector.end());
 int myarray [] = { 501,502,503 };
 myvector.insert (myvector.begin(), myarray, myarray+3);
 std::cout << "myvector contains:";
 for (it=myvector.begin(); it   std::cout << ' ' << *it;
 std::cout << '\n';
 return 0;
}

输出:
myvector contains: 501 502 503 300 300 400 400 200 100 100 100   


回答3:

同意wo370506875的说法,这个不是用不用v.reserve(6)的问题,是p的位置已经改变了,你只要在p++;
p++;
的前面加上一句p=v.begin();
问题就不是问题!
luosiyong 提供的网站非常好哦! (http://www.cplusplus.com/reference/stl/vector/)