博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 中vector的使用方法
阅读量:6265 次
发布时间:2019-06-22

本文共 2893 字,大约阅读时间需要 9 分钟。

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

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

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

特别注意

使用vector需要注意以下几点

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

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

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

实例vector<int>test;

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

简单的使用方法如下

vector<int>test;//建立一个vector

test.push_back(1);

test.push_back(2);//把1和2压入vector这样test[0]就是1,test[1]就是2

 

自己见到的实例

vector<vector<Point2f> > points; //定义一个二维数组

points[0].size();  //指第一行的列数

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();

特别提示

2、重要说明

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

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

3、算法

(1) 使用reverse将元素翻转需要头文件#include<algorithm>

reverse(vec.begin(),vec.end());将元素翻转即逆序排列

(在vector中如果一个函数中需要两个迭代器一般后一个都不包含)

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

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

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

定义排序比较函数

bool Comp(const int &a,const int &b)

{
    return a>b;
}
调用时:sort(vec.begin(),vec.end(),Comp)这样就降序排序。 

 

输出Vector的中的元素   

vector<float> vecClass; 

int nSize = vecClass.size();   

 //打印vecClass,方法一  

for(int i=0;i

需要注意的是以方法一进行输出时数组的下表必须保证是整数。

 //打印vecClass,方法二     

for(int i=0;i
//打印vecClass,方法三输出某一指定的数值时不方便

for(vector
::iterator it = vecClass.begin();it!=vecClass.end();it++) { cout<<*it<<" "; } cout<

二维数组的使用

#include "stdafx.h"  #include 
#include
#include
using namespace std; int main() { using namespace std; int out[3][2] = { 1, 2, 3, 4, 5, 6 }; vector
v1; v1.push_back(out[0]); v1.push_back(out[1]); v1.push_back(out[2]); cout << v1[0][0] << endl;//1 cout << v1[0][1] << endl;//2 cout << v1[1][0] << endl;//3 cout << v1[1][1] << endl;//4 cout << v1[2][0] << endl;//5 cout << v1[2][1] << endl;//6 return 0; }
以上为个人总结欢迎大家互相讨论可以访问我的博客 里面寻找更多的文章

转载地址:http://cgkpa.baihongyu.com/

你可能感兴趣的文章
图说机房空气焓湿处理过程
查看>>
django-auth认证模块
查看>>
check build status
查看>>
int类型究竟占几个字节
查看>>
13.使用toggle()方法绑定多个函数
查看>>
springboot集成redis
查看>>
装饰器的应用-装饰器带参数和不带参数
查看>>
数据库 --> SQL 和 NoSQL 的区别
查看>>
USB学习笔记连载(二十):FX2LP如何实现高速和全速切换(转载)
查看>>
ubuntu下搭建JAVA开发环境【转】
查看>>
和菜鸟一起学c之gcc编译过程及其常用编译选项【转】
查看>>
Linux内核驱动--硬件访问I/O【原创】
查看>>
使用NSUserDefaults保存自定义对象(转)
查看>>
linux上查看swf文件.靠谱
查看>>
sql server两种分页方法
查看>>
一本离线的百科全书,当然无法和一本在线的百科全书抗衡。所谓的常识,在你的思考中被重构,根源就在于在线的崛起。...
查看>>
Floyd算法
查看>>
CentOS 6.4下安装Oracle 11gR2
查看>>
linux建立用户 详细
查看>>
jquery获取radio的值
查看>>