C++vector

  1. 头文件

    #include <vector>
    #include <algorithm>
    #include <iterator>
    
  2. 创建和初始化
    参考文章:https://blog.csdn.net/sss_369/article/details/88360769

  • vector list1; //默认初始化,最常用
  • vector list2(list);
    vector ilist2 = ilist; //拷贝初始化
  • vector list = {1,2,3.0,4,5,6,7};
    vector list {1,2,3.0,4,5,6,7};//列表中元素的拷贝,VS2012 不支持
  • vector list3(list.begin()+2, list.end()-1); //比较常用
  • vector ilist4(7);//包含 7 个元素,每个元素进行缺省的值初始化,对于 int,也就是被赋值为 0
  • vector ilist5(7,3);//指定值初始化,ilist5 被初始化为包含 7 个值为 3 的 int
  • int a[] = {1, 2, 3, 4, 5};
    vector t(a, a + sizeof(a) / sizeof(a[0]));//支持 VS2012
  1. 成员函数
  • push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
  • size( ) 函数显示向量的大小。
  • begin( ) 函数返回一个指向向量开头的迭代器。
  • end( ) 函数返回一个指向向量末尾的迭代器
  • empty( ) 判断是否为空
  • a.swap(b) a、b 向量交换
  1. 排序
    排序函数返回值为 false,元素交换;参数必须加 const 修饰,否则报错

    bool SortDimensions(const DimensionStruct &td1, const DimensionStruct &td2);
    
    void ShowDim(DimensionStruct dim);
    sort(dimlist.begin(), dimlist.end(), SortDimensions);
    

    默认排序算法

    sort(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列
    reverse(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1
    
  2. 遍历

    for_each(dimlist.begin(), dimlist.end(), ShowDim);
    

    等价于

    vector<DimensionStruct>::iterator pr;
    for (pr = dimlist.begin(); pr != dimlist.end(); ++pr)
        ShowDim(*pr);
    

    可以利用 copy 遍历输出 vector

    copy(t.begin(), t.end(), ostream_iterator<int>(cout, " "));
    
  3. 交换两个元素

    iter_swap(t.begin(), t.begin() + i);
    swap(t[i], t[j]);
    
  4. 复制
    把 t 中的从 t.begin()+1(包括它)到 t.end()(不包括它)的元素复制到 k 中,从 k.begin()的位置(包括它)开始复制,覆盖掉原有元素。k 的容量不能为 0,k.size()>t.size()时,只复制 t 的一部分,多余部分丢掉。

    vector<int> k(t.size() - 1);
    copy(t.begin() + 1, t.end(), k.begin());
    
  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、付费专栏及课程。

余额充值