Vecotr容器

概念:C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的,vector容器的功能和数组非常相似,使用时可以把它看成一个数组

vector和普通数组的区别:
1.数组是静态的,长度不可改变,而vector可以动态扩展,增加长度
2.数组内数据通常存储在栈上,而vector中数据存储在堆上

变量声明:

    例:声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。

     例:用vector代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即:vector <int *> a.同理想用向量代替三维数组也是一样,vector <int**>a;再往上面依此类推.

vector<int> v;        //声明一个int型向量

vector<int> v(5);     //声明一个初始大小为5的int向量

vector<int> v(10, 1); //声明一个初始大小为10且值都是1的向量

vector<int> v(tmp);   //声明并用tmp向量初始化v向量

vector<int> tmp(v.begin(), v.begin() + 3);  //用向量v的第0个到第2个值初始化tmp
int arr[5] = {1, 2, 3, 4, 5};   

vector<int> v(arr, arr + 5);      //将arr数组的元素用于初始化v向量;这里不包括arr[4]

vector<int> v(&arr[1], &arr[4]); //将arr[1]~arr[4]范围内的元素作为vec的初始值

一些操作函数:

向量大小: v.size();
向量最大容量: v.max_size();

更改向量大小: v.resize();                         

                        v.resize(int n,element)表示调整容器v的大小为n,多的删去,少的用element                             补,如果不写,默认为0

向量真实大小: v.capacity();

向量判空: v.empty();//常用  :while(!v[n].empty()){  }

减少向量大小到满足元素所占存储空间的大小: v.shrink_to_fit(); //C++ STL 中的内置函数,它减少容器的容量以适应其大小并销毁超出容量的所有元素

注意一下size()与capacity()的区别: 

 

多个元素赋值: v.assign(); //类似于初始化时用数组进行赋值

                                             v.assign(beg,end)  ,将(beg,end)区间中的数据赋值给v;

                                               v.assign(n,elem)    ,  将n个elem的拷贝赋值给v。
末尾添加元素: v.push_back();
末尾删除元素: v.pop_back();
任意位置插入元素: v.insert();
任意位置删除元素:v.erase(pos) 删除pos位置的数据,传回下一个数据的位置
交换两个向量的元素:v.swap();
清空向量元素: v.clear();

元素交换:c1.swap(c2)        将c1和c2元素互换。

元素翻转
#include <algorithm>
reverse(vec.begin(), vec.end());
元素排序
#include <algorithm>
sort(vec.begin(), vec.end()); //采用的是从小到大的排序
//如果想从大到小排序,可以采用上面反转函数,也可以采用下面方法:
bool Comp(const int& a, const int& b) {
    return a > b;
}
sort(vec.begin(), vec.end(), Comp);
 

c.front()          传回第一个数据。

c.back()           传回最后一个数据,不检查这个数据是否存在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值