在c++中,vector是一个十分有用的容器。

作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。

特别注意:

使用vector需要注意以下几点:

1、如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低;

2、Vector作为函数的参数或者返回值时,需要注意它的写法:

double Distance(vector&a, vector&b) 其中的“&”绝对不能少!!!

实例:vectortest;

//建立一个vector,int为数组元素的数据类型,test为动态数组名

简单的使用方法如下:

vector<int>test;//建立一个vector
test.push_back();  //在尾部添加 空间不够会自动扩充 (空间大小为原来的1.5倍)
test.push_back(1);
test.push_back(2);//把1和2压入vector,这样test[0]就是1,test[1]就是2
test.pop_back(); //尾部删除

1 、基本操作

(1)头文件#include<vector>

(2)创建vector对象,vector<int> vec;

(3)尾部插入数字:vec.push_back(a);

(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。

(5)使用迭代器访问元素.

vector<int>::iterator it;for(it=vec.begin();it!=vec.end();it++)cout<<*it<<endl;

(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

(7)删除元素: vec.erase(vec.begin()+2);删除第3个元素

vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

(8)向量大小:vec.size();

(9)清空:vec.clear();

特别提示:这里有begin()与end()函数、front()与back()的差别

2、重要说明

vector的元素不仅仅可以是int,double,string,还可以是结构体,但是要注意:结构体要定义为全局的,否则会出错。

#include<stdio.h>
#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;typedef struct rect
{int id;int length;int width;//对于向量元素是结构体的,可在结构体内部定义比较函数,下面按照id,length,width升序排序。bool operator (const rect &a){if(id != a.id)return id < a.id;else{if(length != a.length)return length < a.length;elsereturn width < a.width;}}
}Rect;int main()
{vector<Rect> vec;Rect rect;rect.id = 1;rect.length = 2;rect.width = 3;vec.push_back(rect);vector<Rect>::iterator it = vec.begin();cout<<(*it).id<<' '<<(*it).length<<' '<<(*it).width<<endl;    return 0;}

3、算法
(1) 使用reverse将元素翻转:需要头文件#include<algorithm>
reverse(vec.begin(),vec.end());将元素翻转,即逆序排列!

(2)使用sort排序:需要头文件#include<algorithm>

sort(vec.begin(),vec.end()); (默认是按升序排列,即从小到大).

可以通过重写排序比较函数按照降序比较,如下:
定义排序比较函数:

bool Comp(const int &a,const int &b)
{return a>b;
}

(3)调用时:sort(vec.begin(),vec.end(),Comp),这样就降序排序。

输出Vector的中的元素

vector<float> vecClass; int nSize = vecClass.size();   //打印vecClass,方法一:  for(int i = 0;i<nSize;i++)
{  cout<<vecClass[i]<<"  ";
}  cout<<endl; 需要注意的是:以方法一进行输出时,数组的下表必须保证是整数。//打印vecClass,方法二:     for(int i = 0;i<nSize;i++)
{  cout<<vecClass.at(i)<<"     ";
}  cout<<endl;
//打印vecClass,方法三:输出某一指定的数值时不方便for(vector<float>::iterator it = vecClass.begin();it!=vecClass.end();it++)
{  cout<<*it<<"   ";
}  cout<<endl;

c++vector使用方法详解相关推荐

  1. Vector的使用详解

    Java中 Vector的使用详解 Vector 可实现自动增长的对象数组.  java.util.vector提供了向量类(Vector)以实现类似动态数组的功能.  创建了一个向量类的对象后,可以 ...

  2. python中backward_pytorch的梯度计算以及backward方法详解

    基础知识 tensors: tensor在pytorch里面是一个n维数组.我们可以通过指定参数reuqires_grad=True来建立一个反向传播图,从而能够计算梯度.在pytorch中一般叫做d ...

  3. for_each使用方法详解

    Abstract 之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL) 曾經討論過for_each(),不過當時功力尚淺,只談到了皮毛而已,這次看了effec ...

  4. java 查询sql语句_java执行SQL语句实现查询的通用方法详解

    完成sql查询 并将查询结果放入vector容器,以便其他程序使用 /* * 执行sql查询语句 */ public static vector executequery(class clazz, s ...

  5. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

  6. python修改文件内容_Python批量修改文本文件内容的方法详解

    这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下 Python批量替换文件内容,支持嵌套文件夹 import os path="./" fo ...

  7. python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  8. Spring JdbcTemplate方法详解

    2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...

  9. golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法详解...

    Golang 实现 PHP里的 serialize() . unserialize() 安装 go get -u github.com/techleeone/gophp/serialize 用法 pa ...

最新文章

  1. PyQt5 技术篇-QTableWidget表格组件的行选择与列选择实例演示,表格组件的双击事件捕获,获取表格选中单元格的值
  2. PS 技术篇-使用ps快速完成证件照片换背景色实例演示10s搞定!
  3. android刷机教程视频,Android 设备刷机教程
  4. C/C++:Windows编程—代码实现IE保护模式的关闭和开启
  5. Redis基准测试火焰图 | 附 svg矢量图
  6. 详细解读!Isotropic Remeshing的详细介绍与实现
  7. 搭建hadoop分布式集群
  8. Spring Cloud总结
  9. spark-submit(spark版本2.3.2)
  10. 心电图 python_能测血压,还有心电图,兼顾9大运动模式,dido手环还不错
  11. 古墓丽影暗影显卡测试软件,ROG STRIX RTX 2060 S显卡测试 就是这么能打!
  12. centos:gtk:No package ‘gdk-2.0‘ found
  13. 319. 灯泡开关【我亦无他唯手熟尔】
  14. 第一行代码-第二版(郭霖著)笔记十一(Material Design)
  15. 微信与php什么区别,微信小店和微信小程序的区别是什么?
  16. python签到脚本_基于Python实现签到脚本过程解析
  17. 携程笔试__界面测试用例
  18. php幻灯片图片不显示不出来,首页幻灯片中图片无法显示的解决办法
  19. Mobius反演(莫比乌斯反演)
  20. 交流充电桩电路图_详细剖析交流充电桩上电源和RS485隔离原理

热门文章

  1. CSDN怎么在文章前面自动生成目录
  2. linux 网络逻辑闪断测试脚本
  3. Ceph CentOS7 部署
  4. PostgreSQL与es的数据同步方案调研
  5. 程序猿和星座之间不可不谈的事
  6. 基于android2.3.5系统:开天辟地Android启动机制[一]
  7. 中国社科院与美国杜兰大学金融管理硕士项目——努力追逐梦想的人最可爱
  8. TH-PEG-DSPE,DSPE-PEG-TH,磷脂-聚乙二醇-靶向肽TH供应
  9. linux红帽umask,Linux-umask
  10. python 扯线木偶_GitHub - huma008/puppet: 简单的股票程序化交易系统。核心模块基于同花顺和通达信金融终端。用户交流群:624585416...