vector容器用法详解(C++)

在C++中,vector是一个十分有用的容器,总结如下:

1.包含头文件

#include <vector>
using namespace std;

2.定义vector容器

vector容器构造函数

vector():创建一个空vector
vector(int nSize):创建一个vector,元素个数为nSize
vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t
vector(const vector&):复制构造函数
vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中
vector初始化实例

 //int型vector  
vector<int> vecInt;  
 
//float型vector  
vector<float> vecFloat;  

//嵌套vector
vector<vector<int>> vec;
//结构体或类 类型的vector
class A  
{  
    //空类  
};
vector<A> vecA
struct B
{空结构体}
vector<B> vecB

//使用构造函数的初始化
//int型vector,包含3个元素  
vector<int> vecIntA(3);  
      
//int型vector,包含3个元素且每个元素都是9  
vector<int> vecIntB(3,9); 

//复制vecIntB到vecIntC  
vector<int> vecIntC(vecIntB); 

//复制数组中begin-end这段区间上的值到vector中
int iArray[]={2,4,6};  
vector<int> vecIntD(iArray,iArray+3); 

3.基本操作

3.1增加函数

void push_back(const T& x):向量尾部增加一个元素X     //使用vector函数添加数
//使用迭代器添加数
iterator insert(iterator it,const T& x):向量中迭代器指向元素前增加一个元素x
iterator insert(iterator it,int n,const T& x):向量中迭代器指向元素前增加n个相同的元素x
iterator insert(iterator it,const_iterator first,const_iterator last):向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
增加实例
//push_back在尾部插入数字1
vector<int> vecIntA;
vecIntA.push_back(1);

//使用迭代器在第一个位置插入数值888
vector<int> vecIntB;
vector<int>::iterator it;
vecIntB.insert(it=vecIntB.begin(),888);

//使用迭代器在第一个位置前插入数值3个888
vector<int> vecIntC;
vector<int>::iterator it;
vecIntC.insert(it=vecIntC.begin(),3,888);

3.2删除函数

iterator erase(iterator it):删除向量中迭代器指向元素
iterator erase(iterator first,iterator last):删除向量中[first,last)中元素
void pop_back():删除向量中最后一个元素
void clear():清空向量中所有元素
删除实例

//删除最后一个元素  
vecIntA.pop_back();  

//删除第四个位置的元素
vector<int> vecIntA;
vecIntA.erase(vecIntA.begin()+4);

//删除第2-5个元素  
vecIntA.erase(vecIntA.begin()+1,vecIntA.begin()+5);

3.3修改vector容器中数

(1)通过数组修改

//修改第二个元素为8
vector<int> vecIntA;
vecIntA[1]=8;

(2)通过引用修改

//修改第二个元素为18
vector<int> vecIntA;
int &m = vecIntA.at(1);  
m=18;

(3)通过迭代器修改

//修改第二个元素为28
vector<int> vecIntA; 
vector<int>::iterator itr = vecIntA.begin()+1;  
*itr = 28;
3.4输出vector容器内容

(1)

vector<int> vecIntA;
for(int i=0;i<vecIntA.size();i++)  
    {  
        cout<<vecIntA[i]<<endl;  
    }  

(2)

vector<int> vecIntA;
for(int i=0;i<vecIntA.size();i++)  
    {  
        cout<<vecIntA.at(i)<<endl;  
    }  

(3)

vector<int> vecIntA;
for(vector<int>::iterator it = vecIntA.begin();it!=vecIntA.end();it++)  
    {  
        cout<<*it<<endl;  
    }  
3.5 判断容器是否为空:vec.empty()

3.6传回第一个数据:vec.front();

3.7清空:vec.clear();

3.8向量数量:vec.size();

4.算法

4.1使用reverse将元素翻转

需要头文件#include<algorithm>,
reverse(vec.begin(),vec.end());
将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含)。

4.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),这样就降序排序。





  • 11
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VectorC++中一个非常有用的容器类,它可以动态地调整存储空间大小。下面是一些常见的使用方法: 1. 创建Vector 使用Vector时,需要包含头文件<vector>。创建一个空的Vector对象可以使用默认构造函数: ```c++ #include <vector> using namespace std; vector<int> vec; //创建一个空的vector ``` 也可以使用初始化列表来创建一个包含元素的Vector: ```c++ vector<int> vec = {1, 2, 3, 4, 5}; //创建包含5个元素的vector ``` 2. 添加元素 向Vector中添加元素使用push_back()方法,可以添加任意类型的元素,例如: ```c++ vec.push_back(6); //向Vector中添加一个整数 vec.push_back("hello"); //向Vector中添加一个字符串 ``` 3. 访问元素 可以使用下标操作符[]或at()方法来访问Vector中的元素,例如: ```c++ int a = vec[0]; //获取Vector中第一个元素 int b = vec.at(1); //获取Vector中第二个元素 ``` 4. 删除元素 使用erase()方法可以删除Vector中的元素,例如: ```c++ vec.erase(vec.begin() + 2); //删除Vector中索引为2的元素 ``` 5. 获取Vector大小 使用size()方法可以获取Vector中元素的数量,例如: ```c++ int size = vec.size(); //获取Vector中元素的数量 ``` 6. 获取Vector容量 使用capacity()方法可以获取Vector的容量,即Vector中可以存储的元素数量,例如: ```c++ int capacity = vec.capacity(); //获取Vector的容量 ``` 7. 清空Vector 使用clear()方法可以清空Vector中的所有元素,例如: ```c++ vec.clear(); //清空Vector中的所有元素 ``` 以上是Vector的一些常见用法,还有很多其他的用法可以参考C++官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值