mapInt.erase(it++); }else{ it++; } } vector.clear() vector中存储了对象的指针,调用clear后,并不会调用这些指针所指对象析构函数,因此要在clear之前调用delete; 如果vector存储的是对象,调用clear后,自建类型的对象(int之类的)直接删除,若是外部类型,则调用析构函数。 看个vector内存分配的例子: classTest ...
(1)erase是容器自带的成员函数,而remove是STL中的函数; (2)erase是真正的删除,而remove是虚假的删除。(下面会说明) 作用 顾名思义,该函数作用是移除容器中的元素。 参数 参数有三个: 头指针、尾指针和要删除的元素。 int b[] = {1,2,3,4,5,5,6}; vector<int> a(b, b+7); vector<int>::iter...
2、删除 vector 容器所有元素 - clear 函数 3、删除 vector 容器指定 位置 元素 - erase 函数 4、删除 vector 容器指定 范围 元素 - erase 函数 5、代码示例 - 删除 vector 容器中的偶数元素 二、 vector 插入元素 1、vector 容器尾部 插入 元素 - push_back 函数 2、vector 容器 指定位置 插入 一个元素 ...
(4)当插入(push_back)一个元素后,如果空间未重新分配,指向插入位置之前的元素的迭代器仍然有效,但指向插入位置之后元素的迭代器全部失效。 正确释放vector的内存(clear(), swap(), shrink_to_fit()) vec.clear():清空内容,但是不释放内存。 vector<int>().swap(vec):清空内容,且释放内存,想得到一个全新的v...
void clear() { erase(begin(), end()); } 而 dtor 大概像这样:~vector() { __destroy_and_...
例如 vector<cstring> buf;buf.clear();意思是清空buf这个向量里面的所有数据 ,buf.erase();意思是删除buf中当前指向的数据;delete *it; 意思是删除迭代器it指向的值;
clear、i。。。vector源码3(参考STL源码--侯捷):pop_back、erase、clear、insert pop_back //删除尾部元素,调整⼤⼩ void pop_back(){ --finish; //尾端标记往前⼀格,表⽰放弃尾部元素 destroy(finish);} erase //清除(first,last)中的所有元素 iterator erase(iterator first,iterator last){ itera...
clear voidclear(){ erase(begin(),end()); } insert template <classT,classAlloc>voidvector<T,Alloc>::insert(iterator position,size_type n,constT&x){if(n!=0){if(size_type(end_of_storage-finish)>=n){//备用空间大于等于"新增元素"T x_copy=x;//以下计算插入点之后的现有元素个数constsize...
clear()表示清空vector上的所有元素。 voidclear(){erase(begin(),end());} 最后 正如侯捷老师说的“源码之前,了无秘密”一样,在看了vector容器的实现源码后,我对其中的底层实现机制有了更深刻的理解。以前常常被迷雾笼罩倍感慌乱,而现在慢慢开始拨开云雾,看到了之前看不到的风景。