1. 获取容器的元素个数 size()

使用 vectorName.size() 可以输出这个容器中类型的个数,如下代码:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 vector<int>num(3, 111);
9 cout << "num 的元素个数:" << num.size() << endl;
10
11 return 0;
12 }

打印结果:

2. 获取容器的大小 capacity()

使用 vectorName.capacity() 可以输出这个容器分配了多少个元素的内存空间,如下代码:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 vector<int>num(5, 111);
9 cout << "num 容器的大小:" << num.capacity() << endl;
10
11 return 0;
12 }

打印结果:

3. vector 容器是否为空 empty()

使用 vectorName.empty() 方法可以获取容器是否为空,如果为空将会返回 true ,否则返回false,如下:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 vector<int>num;
9
10 if (num.empty())
11 {
12 cout << "容器 num 为空" << endl;
13 }
14
15 return 0;
16 }

打印结果:

4. 重新调整 vector 的大小: resize()

缩小:使用 vectorName.resize() 可以重新分配 vector 的大小,重新分配后 vector 的元素个数将会改变,但是容器的大小不会改变,如下代码:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 vector<int>num(5, 888);
9
10 printf("使用 resize 之前\n");
11 cout << "使用 resize 之前 num 的元素数量:" << num.size() << endl;
12 cout << "使用 resize 之前 num 的空间大小:" << num.capacity() << endl;
13
14 for (int i = 0; i < num.size(); i++)
15 {
16 cout << num[i] << endl;
17 }
18
19 num.resize(2);
20
21 cout << "使用 resize 之后 num 的元素数量:" << num.size() << endl;
22 cout << "使用 resize 之后 num 的空间大小:" << num.capacity() << endl;
23 for (int i = 0; i < num.size(); i++)
24 {
25 cout << num[i] << endl;
26 }
27
28 return 0;
29 }

打印结果:

 增加:上边是将 vector 的容量缩小,resize() 的另一种用法可以将 vector 扩容,如下:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 vector<int>num(5, 888);
9
10 printf("使用 resize 之前\n");
11 cout << "使用 resize 之前 num 的元素数量:" << num.size() << endl;
12 cout << "使用 resize 之前 num 的空间大小:" << num.capacity() << endl;
13
14 for (int i = 0; i < num.size(); i++)
15 {
16 cout << num[i] << endl;
17 }
18
19 num.resize(10, 111); //可以将 vector 扩容,将5变为10,并且将新扩展的元素初始化为 111,如果不写 111 会将新增加的元素初始化为 0
20
21 cout << "使用 resize 之后 num 的元素数量:" << num.size() << endl;
22 cout << "使用 resize 之后 num 的空间大小:" << num.capacity() << endl;
23 for (int i = 0; i < num.size(); i++)
24 {
25 cout << num[i] << endl;
26 }
27
28 return 0;
29 }

打印结果:

5. 获取&修改 vector 容器的第一个和最后一个元素的值 front() 和 back()

获取:使用 vectorName.front() 与 vectorName.back() 来获取 vector 的第一个元素与最后一个元素的引用,如下代码:

 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,777,888,999 };
9 vector<int>num(test, test + 9);
10
11 cout << "num 的第一个元素为:" << num.front() << endl;
12 cout << "num 的最后一个元素为:" << num.back() << endl;
13
14 return 0;
15 }

打印结果:

 修改:因为返回的是其引用,那么我们也可以进行赋值操作,如下代码:

 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,777,888,999 };
9 vector<int>num(test, test + 9);
10
11 cout << "num 的第一个元素为:" << num.front() << endl;
12 cout << "num 的最后一个元素为:" << num.back() << endl;
13
14 cout << "=========改变首尾的值========" << endl;
15 num.front() = 1;
16 num.back() = 9;
17
18 for (int i = 0; i < num.size(); i++)
19 {
20 cout << num.at(i) << endl;
21 }
22
23 return 0;
24 }

打印结果:

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

STL—— 容器(vector)的各种功能方法的更多相关文章

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

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

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

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

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

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

  4. STL删除vector或list的方法及注意的问题

    删除vector中的元素 1.删除指定的所有对象 STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除.若要真正移除,需要搭配使用erase().例子: vector ...

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

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

  6. STL容器 -- Vector

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

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

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

  8. 史上最全的各种C++ STL容器全解析

    史上最全的C++ STL 容器大礼包 为什么\(C++\)比\(C\)更受人欢迎呢?除了\(C++\) 的编译令人感到更舒适,\(C++\)的标准模板库(\(STL\))也占了很重要的原因.当你还在用 ...

  9. ACM常用STL容器

    // STL(标准模板库),由三大部分组成:容器,算法,迭代器 // STL六大组件:container(容器),algorthm(算法),iterator(迭代器) // function obje ...

  10. vector向量容器(常用的使用方法总结)

    关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍. vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插 ...

随机推荐

  1. yum 常用命令使用

    1.向服务器上传文件或者下载文件 我们知道我们经常需要向服务器上传文件,或者从服务器下载文件,rz和sz命令可以满足我们的要求, 只不过默认情况下是不能使用的.我们需要使用yum install lr ...

  2. 【Python】Json序列化和反序列化模块dumps、loads、dump、load函数介绍

    1.json.dumps()  json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数. 转换案例: ...

  3. 深度学习论文翻译解析(十四):SSD: Single Shot MultiBox Detector

    论文标题:SSD: Single Shot MultiBox Detector 论文作者:Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Sz ...

  4. 应聘阿里,字节跳动,美团必须掌握的Spring IOC与工厂模式

    Spring IOC与工厂模式 PS:本文内容较为硬核,需要对java的面向对象.反射.类加载器.泛型.properties.XML等基础知识有较深理解. (一)简单介绍 在讲Spring IOC之前 ...

  5. 你了解ABBYY FineReader 14么?

    有没有一款是能够同时处理纸质文档和个类型PDF的一站式解决方案?答案是肯定的,ABBYY FineReader 14集合了强大的光学字符识别(OCR)以及 PDF 查看和编辑功能.不仅能够高效识别图片 ...

  6. Vegas常见问题解答,如何处理预览卡顿

    制作视频并不是简单的拼拼凑凑,很多时候我们都需要给视频加上一些视频特效或转场等效果,如果只是图片素材的话,还不会出现卡顿的现象,但是当你给视频添加了效果后,在预览窗口看到的就是非常卡顿了.除了本身计算 ...

  7. MyBatis的一二级缓存

    一级缓存 一级缓存默认是开启的,生命周期和SqlSession相同.一个会话中每次执行一个查询操作时,会先查询二级缓存,如果二级缓存没查到或者二级缓存未开启就会从一级缓存中查询,如果一级缓存也未查到就 ...

  8. Spring 对Apache Kafka的支持与集成

    1. 引言 Apache Kafka 是一个分布式的.容错的流处理系统.在本文中,我们将介绍Spring对Apache Kafka的支持,以及原生Kafka Java客户端Api 所提供的抽象级别. ...

  9. TCP接收窗口为什么变大了?

    今天用wireshark抓取TCP连接时的报文发现客户端的Win变大了,这里是使用了Window Scale来扩张TCP接收窗口,使得接收窗口可以大于65535字节. 首先1号包是TCP第一次握手连接 ...

  10. linux命令 ——netstat

    作用: 能查到与客户端链接状态和数量 netstat各选项参数说明: -a : 列出所有连接,服务监听,Socket信息 -c : 持续列出网络状态 #每隔一秒输出网络信息 -t : 显示TCP端口  ...