1. clear() 将整个 vector 都删除

使用 vectorname.clear() 可以将整个vector 中的元素全部删除,但是内存不会释放,如下代码:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 vector<int>num(5, 111);
9 cout << "=== 使用 clear() 删除前===" << endl;
10 cout << "num 的元素个数:" << num.size() << endl;
11 cout << "num 容器的大小:" << num.capacity() << endl << endl;
12
13 cout << "=== 使用 clear() 删除后===" << endl;
14 num.clear();
15 cout << "num 的元素个数:" << num.size() << endl;
16 cout << "num 容器的大小:" << num.capacity() << endl;
17
18 return 0;
19 }

打印结果:

2. 使用 erase() 删除 单个&多个 元素

使用 vectorname.clear() 可以删除容器中的单个&多个元素,他返回的是一个迭代器,是删除之后的后一个元素的地址。

删除单个元素:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 int test[] = { 111,222,333,444,555,666 };
9 vector<int>num(test, test + 6);
10 cout << "num 的元素个数:" << num.size() << endl;
11 cout << "num 容器的大小:" << num.capacity() << endl;
12
13 cout << "=== 从头到尾遍历容器 ===" << endl;
14 for (int i = 0; i < num.size(); i++)
15 {
16 cout << num[i] << endl;
17 }
18 vector<int>::iterator it = num.erase(num.begin() + 3); //删除首地址后的第三个元素,并将后一个元素的地址返回
19
20 cout << "num 的元素个数:" << num.size() << endl;
21 cout << "num 容器的大小:" << num.capacity() << endl;
22
23 cout << endl << "=== 使用一个迭代器类型的 it 遍历容器 ===" << endl;
24
25 for (int i = 0; i < num.size() - 3; i++)
26 {
27 cout << *it++ << endl;
28 }
29
30 return 0;
31 }

打印结果:

删除多个元素:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 int test[] = { 111,222,333,444,555,666 };
9 vector<int>num(test, test + 6);
10 cout << "num 的元素个数:" << num.size() << endl;
11 cout << "num 容器的大小:" << num.capacity() << endl;
12
13 cout << "=== 从头到尾遍历容器 ===" << endl;
14 for (int i = 0; i < num.size(); i++)
15 {
16 cout << num[i] << endl;
17 }
18
19 vector<int>::iterator it = num.erase(num.begin(), num.begin() + 3); //删除1-3的元素,并将后一个元素的地址返回
20 cout << "num 的元素个数:" << num.size() << endl;
21 cout << "num 容器的大小:" << num.capacity() << endl;
22
23 cout << endl << "=== 使用一个迭代器类型的 it 遍历容器 ===" << endl;
24
25 for (int i = 0; i < num.size(); i++)
26 {
27 cout << *it++ << endl;
28 }
29
30 return 0;
31 }

打印结果:

==========================================================================================================================

STL—— 容器(vector)元素的删除的更多相关文章

  1. 从零开始写STL—容器—vector

    从0开始写STL-容器-vector vector又称为动态数组,那么动态体现在哪里?vector和一般的数组又有什么区别?vector中各个函数的实现原理是怎样的,我们怎样使用会更高效? 以上内容我 ...

  2. 怎么删除STL容器的元素

    在STL容器有顺序容器和关联容器两种. 顺序容器删除元素的方法有两种: 1.c.erase(p) 从c中删除迭代器p指定的元素.p必须指向c中一个真实元素,不能等于c.end().返回一个指向p之后元 ...

  3. STL容器vector应用注意事项

    [1]提前分配足够空间以免不必要的重新分配和复制代价 关于vector容器重新分配和复制及析构释放的代价,请参见随笔<STL容器之vector>. 应用示例对比代码如下: #include ...

  4. STL容器 -- Vector

    核心:Vector 是 STL 里的一个向量容器,可以像数组那样进行随机访问,能在尾部插入元素,对于元素的删除和插入可以动态管理内存. 头文件: #include <vector> 构造函 ...

  5. vector元素的删除 remove的使用 unique的使用

    在vector删除指定元素可用以下语句 : v.erase(remove(v.begin(), v.end(), element), installed.end()); 可将vector中所有值为el ...

  6. [C++]STL容器Vector的内存释放

    直接抛出两句话,说明到底应该如何释放Vector占用的内存. “vector的clear不影响capacity,你应该swap一个空的vector.” <Effective STL>中的“ ...

  7. STL容器 vector,list,deque 性能比较

    C++的STL模板库中提供了3种容器类:vector,list,deque对于这三种容器,在觉得好用的同时,经常会让我们困惑应该选择哪一种来实现我们的逻辑.在少量数据操作的程序中随便哪一种用起来感觉差 ...

  8. STL - 容器 - vector简单应用

    VectorTest.cpp #include <vector> #include <iostream> #include <string> #include &l ...

  9. STL容器迭代器失效问题讨论

    STL源码剖析---迭代器失效小结 vector迭代器的几种失效的情况: .当插入(push_back)一个元素后,end操作返回的迭代器肯定失效. .当插入(push_back)一个元素后,capa ...

  10. 【转】c++中Vector等STL容器的自定义排序

    如果要自己定义STL容器的元素类最好满足STL容器对元素的要求    必须要求:     1.Copy构造函数     2.赋值=操作符     3.能够销毁对象的析构函数    另外:     1. ...

随机推荐

  1. 定位一个网络问题引起的ceph异常

    前言 有一个ceph环境出现了异常,状态就是恢复异常的慢,但是所有数据又都在走,只是非常的慢,本篇将记录探测出问题的过程,以便以后处理类似的问题有个思路 处理过程 问题的现象是恢复的很慢,但是除此以外 ...

  2. 分布式 task_master / task_worker

    17:08:0317:08:04 在Thread(线程)和Process(进程)中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread最多只能分 ...

  3. php 与 docker php-fpm 共存问题

    需求: 本地一个 php7 的 php-fpm,现在需要运行 php5.2版本的程序, 服务器安装的 nginx 解析域名,碰见 php 文件交给 php5的 php-fpm; 注意: fastcgi ...

  4. webug第十六关:明天双十一

    ---恢复内容开始--- 第十六关:明天双十一 不说了...只能看着源码做出来 ---恢复内容结束---

  5. 为什么 @Value 可以获取配置中心的值?

    hello,大家好,我是小黑,好久不见~~ 这是关于配置中心的系列文章,应该会分多篇发布,内容大致包括: 1.Spring 是如何实现 @Value 注入的 2.一个简易版配置中心的关键技术 3.开源 ...

  6. 【Camtasia教学】如何添加光标效果

    随着网络技术的快速发展,手机等移动工具越来越普及,我们的生活也发生了很大的变化,例如我们以前必须去到学校才能学习知识,但是现在躺在床上都可以看国外的教学视频.所以在网上录制教学或者演示视频变得越来越常 ...

  7. 如何用Folx的浏览器集成功能设置捕获类型

    Folx的浏览器集成功能,可将Folx的下载功能添加到浏览器的上下文菜单(也就是右键快捷菜单)中,方便用户使用Folx捕获页面中的下载链接,并创建下载任务. 那么,用户需要进行哪些设置才能使用Folx ...

  8. iOS问题:pch not found

    问题描述: clang: error: no such file or directory: '/Users/apple/Desktop/迅点App_Mark/FaceHelp/FaceHelp-Pr ...

  9. 写给程序员的机器学习入门 (九) - 对象识别 RCNN 与 Fast-RCNN

    因为这几个月饭店生意恢复,加上研究 Faster-RCNN 用掉了很多时间,就没有更新博客了.这篇开始会介绍对象识别的模型与实现方法,首先会介绍最简单的 RCNN 与 Fast-RCNN 模型,下一篇 ...

  10. java Base64算法

    Base64算法并不是加密算法,他的出现是为了解决ASCII码在传输过程中可能出现乱码的问题.Base64是网络上最常见的用于传输8bit字节码的可读性编码算法之一.可读性编码算法不是为了保护数据的安 ...