C++vector

C++vector,第1张

C++vector

    头文件

    #include 
    #include 
    #include 
    

    创建和初始化
    参考文章: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,也就是被赋值为 0vector ilist5(7,3);//指定值初始化,ilist5 被初始化为包含 7 个值为 3 的 intint a[] = {1, 2, 3, 4, 5};
vector t(a, a + sizeof(a) / sizeof(a[0]));//支持 VS2012

    成员函数

push_back( ) 成员函数向量的末尾插入值,如果有必要会扩展向量的大小。size( ) 函数显示向量的大小。begin( ) 函数返回一个指向向量开头的迭代器。end( ) 函数返回一个指向向量末尾的迭代器empty( ) 判断是否为空a.swap(b) a、b 向量交换

    排序
    排序函数返回值为 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
    

    遍历

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

    等价于

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

    可以利用 copy 遍历输出 vector

    copy(t.begin(), t.end(), ostream_iterator(cout, " "));
    

    交换两个元素

    iter_swap(t.begin(), t.begin() + i);
    swap(t[i], t[j]);
    

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

    vector k(t.size() - 1);
    copy(t.begin() + 1, t.end(), k.begin());
    

    查找

    find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置
    

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5713936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存