首页 > 其他分享 >vector的使用

vector的使用

时间:2024-01-23 15:15:57浏览次数:23  
标签:容器 begin 10 元素 v1 vector 使用

1、基本概念

vector是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector是C++STL的一个重要成员,使用它时需要包含头文件:

1 #include <vector>

构造函数与初始化:

 vector的构造函数用来构造vector容器,函数原型为:

1 vector<T> v;                         // 使用模板类实现,使用默认构造函数
2 vector(v.begin(), v.end());          // 将v的元素拷贝
3 vector(n, elem);                    // 使用n个元素,值为elem
4 vector(const vector & vec);          // 拷贝构造函数 

初始化示例如下:

 1 vector<int> a(10);//定义了10个整型元素的向量,但未给出初始值
 2 
 3 vector<int>a(10,0);//定义了10个整型元素初始值为0
 4  
 5 vector<int> a(b);//用b向量来创建a向量,整体复制性赋值
 6  
 7 vector<int> a(b.begin(),b.begin()+3);//定义a中前三个元素为b中前三个元素
 8  
 9 set<string> temp;
10 vector<string> a(temp.begin(),temp.end());//将temp中的元素赋值给a
11  
12 int arr[]={1,2,3,4,5};
13 vector<int> res(arr,arr+5);
14  
15 vector<int> res{1,2,3,4,5}
16  
17 vector<int> arr{1,2,3,4,5};
18 vector<int> res;
19 res=arr;//

2、vector一些操作

(1)赋值操作

对vector容器进行赋值。函数原型为:

1 vector& operator=(const vector &vec); // 重载等号操作符
2 assign(begin,end);                    // 将另一个数组的元素赋值给当前vector
3 assign(n,elem);                       // 将N个elem赋值给当前vector

示例如下:

1 vector<int> v1={1,2,3,4,5};
2  
3 vector<int> v2=v1;
4  
5 vector<int> v3;
6 v3.assign(v1.begin(),v1.end());
7  
8 vector<int> v4;
9 v4.assign(10,9);                     //元素为10个9

(2)插入元素

函数原型为:

1 v.push_back(val);                              // 尾部插入元素val
2 v.insert(const_intertor pos,val);              // 在迭代器指向位置Pos插入val
3 v.insert(const_intertor,int count,int val);    // 在迭代器指向位置插入count个val

示例如下:

1 vector<int> v1;
2 v1.push_back(10);            // 元素值为10
3  
4 v1.insert(v1.begin(),100);   // 元素值为100,10
5  
6 v1.insert(v1.begin(),2,200); // 元素值为200,200,100,10

(3)删除

函数原型为:

1 pop_back();                                     // 删除最后一个元素
2 erase(const_iterator pos);                      // 删除迭代器指向的元素
3 erase(const_iterator start,const_iterator end); // 删除[start,end)之间的元素

示例如下:

1 vector<int> v={1,2,3,4,5,6};
2  
3 v.pop_back();                      // 1,2,3,4,5
4 v.erase(v.begin()+2);              // 1,2,4,5
5 v.erase(v.begin(),v.begin()+2);    // 5,

(4) 数据存取

即获取vector中特定位置的数据。函数原型为:

1 at(int idx);     // 获取索引idx位置的元素
2 operator[];      // 返回索引idx位置的元素
3 front();         // 返回容器中第一个元素
4 back();          // 返回容器中最后一个元素

示例如下:

1 vector<int> v={1,2,3,4,5,6};
2  
3  cout<<v.at(3)<<endl;           // 4
4  cout<<v[4]<<endl;              // 5
5  cout<<v.front()<<endl;         // 1
6  cout<<v.back()<<endl;          // 6

(5)容器大小

1 empty();                            // 判断容器是否为空,若为空,返回值为1,否则返回值为0
2 capacity();                         // 容器的数量
3 size();                             // 容器中元素的个数
4 resize(int num);                    // 重新指定容器的长度为num,若容器边长,则使用默认值0填充新位置,若容器变短,末尾超过容器长度的元素被删除
5 resize(int num,int val);            // 重新指定容器的长度为num,若容器变长,使用val填充,若容器变短,末尾超出的元素被删除

示例如下:

1 vector<int> v={1,2,3,4,5,6};
2   
3  cout<<v.empty()<<endl;                 // 0
4  cout<<v.capacity()<<endl;              // 6
5  cout<<v.size()<<endl;                  // 6
6  v.resize(10);                          // 1,2,3,4,5,6,0,0,0,0
7  v.resize(12,20);                       // 1,2,3,4,5,6,0,0,0,0,20,20

(6) 交换vector元素

1 swap(vec);           // 交换2个vector的元素

示例如下:

1 vector<int> v1={1,2,3,4,5,6};
2 vector<int> v2={6,6,6};
3  
4 v1.swap(v2);                            // v1为6,6,6,v2为1,2,3,4,5,6

3、二维数组

 二维数组只在初始化时有所区别,需要指明行列的值

1 vector<vector<int>>res(row,vector<int>(col,0));   // 初始化row*col数组,初始元素都为0
2  
3 vector<vector<int>>res(row,vector<int>(col));     // 初始化row*col数组
4  
5 vector<vector<int>> res;
6 res.size(r);
7 for(int i=0;i<r;i++)
8   res[i].resize(c);

 

 

 

标签:容器,begin,10,元素,v1,vector,使用
From: https://www.cnblogs.com/Zhouce/p/17982513

相关文章

  • 玩转数据处理利器:学会使用 YAML 文件轻松处理数据
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。YAML文件处理什么是YAML文......
  • 使用KeepAlived搭建MySQL高可用环境
     使用KeepAlived搭建MySQL的高可用环境。首先搭建MySQL的主从复制在Master开启binlog,创建复制帐号,然后在Slave输入命令 2016年7月25日 配置安装技巧: 1,使用yuminstall安装keepAlived  2,安装完后,配置/etc/keepalived/keepalived.conf配置文件,一开始配置名字取错了,老有......
  • percona-toolkit工具包的安装和使用
     1.检查和安装与Perl相关的模块  PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境。  依赖包检查命令为:rpm-qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL  如果有依赖包确实,可以使用下面的命令安装:yuminstallperl-DBIyuminstal......
  • 玩转数据处理利器:学会使用 YAML 文件轻松处理数据
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。YAML文件处理什么是Y......
  • k8s使用cifs创建pv,某些节点不能挂载
    1.不能挂载的节点报错从报错可以看到pod中的挂载点已经存在了,不能创建RunContainerError(failedtostartcontainer"0ea31f12b87474dbd125a3999114afae53fb92b2c1106d5e65110170e3f3ac80":Errorresponsefromdaemon:errorwhilecreatingmountsourcepath'/var/lib/k......
  • 基于 Alpine 使用 kubeadm 搭建 k8s
    基于Alpine使用kubeadm搭建k8s先部署基础环境,然后根据官方文档K8s-AlpineLinux,进行操作。将官方文档整理为脚本整理脚本时,有部分调整#!/bin/shset-x#添加源,安装时已经配置#cat>>/etc/apk/repositories<<"EOF"#http://mirrors.aliyun.com/alpine/edge/commu......
  • 使用 Alpine 搭建 k3s
    使用Alpine搭建k3s官方文档:K3s-轻量级Kubernetes|K3s官方描述,可运行在systemd或者openrc环境上,那就往精简方向走,使用alpine做系统。与RHEL、Debian的区别,主要在防火墙侧;其他基础配置需求类似,脚本指令一致。下载安装包【离线安装】:Releases·k3s-io/k3s(......
  • 基于 Alpine 使用 kubeadm 搭建 k8s
    基于Alpine使用kubeadm搭建k8s先部署基础环境,然后根据官方文档K8s-AlpineLinux,进行操作。将官方文档整理为脚本整理脚本时,有部分调整#!/bin/shset-x#添加源,安装时已经配置#cat>>/etc/apk/repositories<<"EOF"#http://mirrors.aliyun.com/alpine/edge/commu......
  • 微信小程序-wx:key的作用为什么不能使用index
    wxml中的代码为<viewclass="swiperContent"><swiper indicator-dots="true"autoplay="true"><swiper-itemwx:for="{{bannerList}}"wx:key="bannerId"><imagesrc="{{ite......
  • ngxinx基本使用
    前言ngxin的所有功能,一般都是在nginx的配置文件中完成的。所以这同样也是一篇nginx配置文件的熟练过程。根路径当浏览器访问nginx服务的时候,默认的页面路径,一般安装方式不同,根路径也不同编译包的路径一般在:/usr/local/nginx/htmlyum安装的一般在:/usr/share/nginx/html......