C++基础(4)——vector

  1. vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
  2. 必须包含头文件#include,全局命名域方式using namespase std;
  3. vector使用方式
    (1) vector c,c;
    (2) vector c(n);//定义已知长度的向量,类似于int a[10];
  4. vector初始化
    (1) vector c(10);//定义长度为10的整型向量,初始值随机;
    (2) vector c(10,1);// 定义长度为10的整型向量,初始值都为1;
    (3) vector c(b);//用b向量创建c向量,整体复制性赋值;
    (4) vector c(b.begin(),b.begin()+3);//定义向量a,为b中的第0个元素到第2个元素;
  5. 成员函数
函数表述
c.assign(b.begin(),b.end());c.assign(n,elem)将b向量[beg;end)区间的数据赋值给c;将n个值为elem的拷贝赋值给c
c.at(idx)传回索引idx所指的数据,如果idx越界,抛出out_of_range
c.back()传回最后一个数据,不检查这个数据是否存在。
c.begin()传回迭代器中的第一个数据。
c.capacity()返回容器中数据个数。
c.clear()移除容器中所有数据。
c.empty()判断容器是否为空。
c.end()指向迭代器中的最后一个数据地址。
c.erase(pos); c.erase(beg,end)删除pos位置的数据,传回下一个数据的位置。 删除[beg,end)区间的数据,传回下一个数据的位置。
c.front()传回第一个数据。
get_allocator使用构造函数返回一个拷贝。
c.insert(pos,elem) ; c.insert(pos,n,elem); c.insert(pos,b.begin(),b.end())在pos位置插入一个elem拷贝,传回新数据位置。 在pos位置插入n个elem数据。无返回值。 在pos位置插入在[beg,end)区间的数据。无返回值。
c.max_size()返回容器中最大数据的数量。
c.pop_back()删除最后一个数据。
c.push_back(elem)在尾部加入一个数据。
c.rbegin()传回一个逆向队列的第一个数据。
c.rend()传回一个逆向队列的最后一个数据的下一个位置。
c.resize(num)重新指定队列的长度。
c.reserve()保留适当的容量。
c.size()返回容器中实际数据的个数。
c1.swap(c2) ; swap(c1,c2)将两个向量的元素整体互换。 同上操作。
vector c; vector c1(c2); vector c(n); vector c(n, elem); vector c(beg,end); c.~ vector ()创建一个空的vector。 复制一个vector。 创建一个vector,含有n个数据,数据均已缺省构造产生。 创建一个含有n个elem拷贝的vector。 创建一个以[beg;end)区间的vector。 销毁所有数据,释放内存。
  1. 添加\读取\删除元素
    (1) a.push_back(num);//向量尾部添加元素
    (2) 从数组中选取元素放入向量
    int a[5] = {1,2,3,4,5};
    vector vec(a,a+5);
    (3) Btemp.erase(find(Btemp.begin(),
    Btemp.end(), Ob_1));// vector类型需要先找到元素的位置,再使用删除函数
    Btemp.erase(Ob_1);//set类型的删除函数,只需要写具体元素值
    (4) cout<<a[i];//输出向量a的第i个元素,注意,只有向量里面存在元素时,才能使用下标的方式进行读取,不能用下标的方式进行赋值。
    (5) vector::iterator it;//迭代器方式读取向量元素
    it=c.begin();
    cour<<*it;
  2. 相关算法使用
    (1) 需要包含头文件#include
    (2) sort(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列
    sort自定义排序,定义比较函数,然后将函数名作为sort函数的参数传入。
    bool Compare();
    sort(c.begin(),c.end(),Compare);
    (3) reverse(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1
    (4) copy(a.begin(),a.end(),b.begin()+1); //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素
    (5) find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值