c++ vector学习

1.头文件

#include<vector>

2.使用方式

vector<类型>标识符 

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

vector<int> test;
vector<string> test;

3.常用的一些方法

test.push_back(a);//向量尾部增加一个元素
test.pop_back(a);//删除向量中最后一个元素
test.clear(a);//​清空向量中所有元素
test.size();//返回向量中元素的个数
test.empty();//判断向量是否为空,若为空,则向量中无元素
test.front()​;//返回首元素的引用
test.back()​;//返回尾元素的引用
test.begin()​;//返回向量头指针,指向第一个元素
test.end()​;//返回向量尾指针,指向向量最后一个元素的下一个位置
test.at(int pos)​;//返回pos位置元素的引用
​test.insert(test.begin()+i,a)​;// 在第i+1个元素前面插入a;

test.erase(test.begin()+2)​ ;// 删除第i+2个元素

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

简要概括:

1.push_back 在数组的最后添加一个数据

2.pop_back 去掉数组的最后一个数据

3.at 得到编号位置的数据

4.begin 得到数组头的指针

5.end 得到数组的最后一个单元+1的指针

6.front 得到数组头的引用

7.back 得到数组的最后一个单元的引用

8.max_size 得到vector最大可以是多大

9.capacity 当前vector分配的大小

10.size 当前使用数据的大小

11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值

12.reserve 改变当前vecotr所分配空间的大小

13.erase 删除指针指向的数据项

14.clear 清空当前的vector

15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)

16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)

17.empty 判断vector是否为空

18.swap 与另一个vector交换数据

vector<vector<Point2f> > points; //定义一个二维数组
points[0].size();  //指第一行的列数
使用迭代器访问元素.

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

算法

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

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

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

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

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

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

定义排序比较

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

函数.调用时: sort(test.begin(),test.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;    

二维数组的使用

#include <vector>   
#include <iostream>   
using namespace std;  
int main()  
{  
    using namespace std;  
    int out[3][2] = { 1, 2,   
             3, 4,  
            5, 6 };  
    vector <int*> 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;  
}  

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值