首页 > 其他分享 >vector容器(下)

vector容器(下)

时间:2023-05-10 19:33:05浏览次数:32  
标签:容器 int back v1 vector push include

五、vector的插入和删除

1、功能描述:对vector容器进行插入、删除操作;

2、函数原型:

(1)push_back(ele); //尾部插入元素ele

(2)pop_back(ele);  //删除最后一个元素

(3)insert(const_iterator ops,ele); //迭代器指向位置pos插入元素ele

(4)insert(const_iterator pos,int count,ele); //迭代器指向位置pos插入count个元素ele

(5)erase(const_iterator pos); //删除迭代器指向的元素

(6)erase(const_iterator start,const_iterator end);//删除迭代器从start到end之间的元素

(7)clear(); //删除容器中所有元素

3、代码

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 void printVector(vector<int>& v)
 5 {
 6     for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
 7     {
 8         cout << *it << " ";
 9     }
10     cout << endl;
11 }
12 void test01()
13 {
14     vector<int> v1;
15     v1.push_back(10);
16     v1.push_back(20);
17     v1.push_back(30);
18     v1.push_back(40);
19     v1.push_back(50);
20     printVector(v1);
21     v1.pop_back();     //尾删
22     printVector(v1);
23 
24     v1.insert(v1.begin(),100);   //插入
25     printVector(v1);
26 
27     v1.insert(v1.begin(), 2, 1000);
28     printVector(v1);
29 
30     v1.erase(v1.begin());
31     printVector(v1);
32 
33     v1.erase(v1.begin(), v1.end());
34     v1.clear();
35     printVector(v1);
36     
37 }
38 int main()
39 {
40     test01();
41     return 0;
42 }

运行结果:

 六、vector数据存取

1、功能描述:对vector中的数据的存取操作

2、函数原型:

(1)at(int dex);//返回索引idx所指的数据

(2)operaotr[];  //返回索引idx所指的数据

(3)front();  //返回容器中第一个数据元素

(4)back();  //返回容器中最后一个数据元素

3、代码

 1 #include <iostream>
 2 using namespace std;
 3 #include <vector>
 4 void printVector(vector<int>& v)
 5 {
 6     for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
 7     {
 8         cout << *it << " ";
 9     }
10     cout << endl;
11 }
12 void test01()
13 {
14     vector<int>v1;
15     for (int i = 0; i < 10; i++)
16     {
17         v1.push_back(i);
18     }
19     for (int i = 0; i < v1.size(); i++)
20     {
21         cout << v1[i] << " ";
22     }
23     cout << endl;
24     cout << "v1的第一个元素为:" << v1.front() << endl;
25     cout << "v1的最后一个元素为:" << v1.back() << endl;
26 }
27 int main()
28 {
29     test01();
30     return 0;
31 }

运行结果:

 七、vector互换容器

1、功能描述:实现两个容器内元素进行交换

2、函数原型:swap(vec); //将vec与本身的元素交换

3、代码

 1 #include <iostream>
 2 using namespace std;
 3 #include <vector>
 4 void printVector(vector<int>& v)
 5 {
 6     for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
 7     {
 8         cout << *it << " ";
 9     }
10     cout << endl;
11 }
12 void test01()
13 {
14     vector<int>v1;
15     for (int i = 0; i < 10; i++)
16     {
17         v1.push_back(i);
18     }
19     cout << "v1的元素为:" << endl;
20     printVector(v1);
21     vector<int>v2;
22     for (int i = 9; i >= 0; i--)
23     {
24         v2.push_back(i);
25     }
26     cout << "v2的元素为:" << endl;
27     printVector(v2);
28 
29     v1.swap(v2);    //执行交换操作,将v1和v2容器中的元素进行交换
30     
31     cout << "交换后v1的元素为:" << endl;
32     printVector(v1);
33     cout << "交换后v2的元素为:" << endl;
34     printVector(v2);
35 }
36 int main()
37 {
38     test01();
39     return 0;
40 }

运行结果:

 八、vector预留空间

1、功能描述:减少vector在动态扩展容量时的扩展次数

2、函数原型:reserve(int len); //容器预留len个元素长度,预留位置不初始化,元素不可访问

3、代码

(1)不进行预留空间的操作

 1 #include <iostream>
 2 using namespace std;
 3 #include <vector>
 4 void test01()
 5 {
 6     vector<int>v;
 7     /*v.reserve(100000);*/        //执行空间预留的操作
 8     int num = 0;
 9     int* p = NULL;
10     for (int i = 0; i < 100000; i++)
11     {
12         v.push_back(i);
13         if (p != &v[0])
14         {
15             p = &v[0];
16             num++;
17         }
18     }
19     cout << "num=" << num << endl;
20 }
21 int main()
22 {
23     test01();
24     return 0;
25 }

运行结果:

 (2)执行预留空间的操作

 1 #include <iostream>
 2 using namespace std;
 3 #include <vector>
 4 void test01()
 5 {
 6     vector<int>v;
 7     v.reserve(100000);        //执行空间预留的操作
 8     int num = 0;
 9     int* p = NULL;
10     for (int i = 0; i < 100000; i++)
11     {
12         v.push_back(i);
13         if (p != &v[0])
14         {
15             p = &v[0];
16             num++;
17         }
18     }
19     cout << "num=" << num << endl;
20 }
21 int main()
22 {
23     test01();
24     return 0;
25 }

运行结果:

 

(3)对比

不进行预留空间的操作-------------开辟空间的次数num=30;

进行预留空间的操作----------------开辟空间的次数num=1;

二者相比较,执行预留空间操作后,内存开辟的次数减少,从而可以节省运行时间,提高效率;

(4)总结:如果数据量较大,可以一开始利用reserve预留空间;

标签:容器,int,back,v1,vector,push,include
From: https://www.cnblogs.com/lian369/p/17389094.html

相关文章

  • IOC容器-Autofac
    Autofac是第三方IOC容器,是当前最流行的IOC容器。1.容器创建对象//创建一个容器建造者ContainerBuildercontainerBuilder=newContainerBuilder();//注册普通类containerBuilder.RegisterType<Honer>();//build一下,得到一个容器IContainercontainer=containerBuild......
  • 每日打卡c++中vector容器使用
    首先头文件#include<vector>for_each一种算法需要头文件#include<algorithm>标准算法头文件vector<int>::iterator迭代器,可以当指针用。基本格式vector<数据类型>名称;数据类型可以是类。例子#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;cla......
  • 【C++容器基础】
    容器汇总: 向量(vector): 队列(deque):列表(list): 数组(array): 字符串(string): 映射(map):无序 集合(set):无序不重复 ......
  • 未知大小的图片适应(保持宽高比且不超出)图片容器的CSS属性
    假设我们本地代码中有一个宽*高为100px*100px的图片的容器元素<divclass="img-wrapper"style="width:100px;height:100px;"><imgsrc="..."alt="待展示图片"/></div> 如果图片不我们本地,而是属于其他人资源,那么图片的尺寸、大小对于我们来讲是不可控的。这种情......
  • 学习LXC(Linux 容器)技术
    安装LXC、LXD、zfs测试机器为ubuntusudoapt-getinstalllxclxdzfsutils-linux-y创建LXD的zfs存储池sudolxdinit##根据提示全部敲回车即可添加官方镜像源sudolxcremoteaddimagesimages.linuxcontainers.org查看镜像lxcimagelist[<remote>:][<filter>......
  • C++如何实现容器的Copy/Move/Swap方法
    C++如何实现容器的Copy/Move/Swap方法1、引言目前网上有很多关于如何编写C++容器的教程,比如各种“手写STL”之类的文章和视频,但是这些教程中的容器一般都不包括allocator,比如:template<typenameT>classMyVector{...};然而我们知道标准库的容器都是有一个Allocator的模......
  • k8s容器资源需求与资源限制
    在Kubernetes中,我们可以通过为容器定义资源需求和限制来管理容器的资源使用。资源需求(ResourceRequests):指容器在调度和运行时需要的最小资源。当定义了资源需求后,Kubernetes会根据该需求进行调度,安排节点资源。如果节点不能满足指定的需求,Pod将不会被调度。资源需求包括:CP......
  • 全景剖析阿里云容器网络数据链路(三)—— Terway ENIIP
    来源https://help.aliyun.com/practice_detail/602821本系列联合作者容器服务@谢石前言近几年,企业基础设施云原生化的趋势越来越强烈,从最开始的IaaS化到现在的微服务化,客户的颗粒度精细化和可观测性的需求更加强烈。容器网络为了满足客户更高性能和更高的密度,也一直在高速的......
  • docker介绍、什么是虚拟化、docker是什么、容器与虚拟机比较、Docker 概念、docker安
    目录1docker介绍1.1什么是虚拟化2.1docker是什么2.2容器与虚拟机比较2.3Docker概念2docker安装1docker介绍1.1什么是虚拟化在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破......
  • k8s容器安全上下文
    k8s在创建和管理Pod时,可以设置一些安全限制。它包括以下几个方面:1.自主访问控制(DAC):每个容器都有一个默认的用户ID,可以通过PodSecurityContext或SecurityContext来修改它。通过限制各个容器使用不同的用户ID或组ID,可以减小容器之间的攻击面。2.Linux功能:将内核管理权限......