原因:insert之后vector会分配新的空间,旧迭代器便会失效。 解决办法:取insert函数的返回值为新的迭代器。 原因2:迭代器指向的位置的意义改变 比如,在调用删除函数erase后可能出现迭代器失效。 示例: void test_2() { std::vector<int> vec; vec.push_back(0); vec.push_back(1); vec.push_back(2); ve...
#include<vector>vector<int>a,b;//b为向量,将b的0-2个元素赋值给向量aa.assign(b.begin(),b.begin()+3);//a含有4个值为2的元素a.assign(4,2);//返回a的最后一个元素a.back();//返回a的第一个元素a.front();//返回a的第i元素,当且仅当a存在a[i];//清空a中的元素a.clear();//判断a...
at(int idx); //返回索引idx所指的数据,如果idx越界,抛出out_of_range异常。 operator[];//返回索引idx所指的数据,越界时,运行直接报错 front();//返回容器中第一个数据元素 back();//返回容器中最后一个数据元素 3.2.4.5 vector插入和删除操作 insert(const_iterator pos, int count,ele);//迭代器指向位...
void vector_test7() { vector<int> v1; v1.push_back(1); v1.push_back(2); v1.push_back(3); v1.push_back(4); v1.push_back(5); v1.push_back(6); v1.push_back(7); vector<int>::iterator it = v1.begin() + 3;// 4 cout << *it << endl; v1.insert(3, 40); ...
c.insert(pos,n,elem) // 在pos位置插入n个elem数据。无返回值。 c.insert(pos,beg,end) // 在pos位置插入在[beg,end)区间的数据。无返回值。 c.max_size() // 返回容器中最大数据的数量。 c.pop_back() // 删除最后一个数据。 c.push_back(elem) // 在尾部加入一个数据。
vector 容器:insert 函数,直接插入另一个 vector? 不过这种列表只能写在函数参数中才奏效,如果你试图用一个 vector 作为这个参数,就会出错!报错会说因为 vector 和 initializer_list 不是同一个类型。 那要如何插入另一个 vector,或者说,把 a 和 b 这两个数组合并起来呢? eg: #include <vector> #include <...
vec.insert(pos, elem) 在pos位置插入一个elem元素的拷贝,返回新数据的位置 vec.insert(pos, n, elem) 在pos位置插入n个elem数据,无返回值。 vec.insert(pos, beg, end) 在pos位置插入[beg,end)区间的数据, 无返回值 简单案例 vector<int> vecA; ...
21. vector::insert()iterator insert ( iterator position, const T& x );void insert ( iterator position, size_type n, const T& x );template <class InputIterator> void insert ( iterator position, InputIterator first, InputIterator last );插入新的元素,第一个函数,在迭代器指定的...
上面两种做法都可以达到同样的效果,但是第二种更高效,更具有通用性。 对于返回的是结构体vector的类型来说,①②都失效,最后一种方法很有效,而且很好用。 还是没有解决。后面再更新吧... 最后看到一条,直接跳过resize的方法: 【C++】 vector 的合并 insert比较好用,merge需要考虑size足够和大小排序。