linqy的个人博客分享 http://blog.sciencenet.cn/u/linqy

博文

对C++的vector的使用和部分功能总结

已有 4276 次阅读 2017-4-20 20:07 |个人分类:C++|系统分类:科研笔记| 、结构体

本人最近由于编代码的时候用到了vector函数,下面对用到的vector的部分功能进行总结。

在c++中,vector是一个十分有用的容器,可以随时在任意位置插入数据,也可以随时删除任意位置的数据;

vector中的数据既可以是一般的数据类型也可以是结构体。既可以在函数中使用,也可以在作为函数参数的返回值。

用法简介:

1、使用时头文件需要加上:#include<vector>.

2、声明:vector<int>   demo;//int为数据类型,可以替换为double,char等

特别说明:若vector存的为结构体struct,那么结构体需要在主函数中声明,否则编译会出错

在函数中使用实例:vector<struct pointinfo> costxy;

作为函数返回值是的声明:vector<struct pointinfo> &costxy;

3、使用方法:

(1)尾部插入数字:costxy.push_back(a);
(2)使用下标访问元素,cout<<costxy[0]<<endl;记住下标是从0开始的。
(3)使用迭代器访问元素.

       vector<int>::iterator it;
       for(it=vec.begin();it!=vec.end();it++)
        cout<<*it<<endl;
(4)插入元素:    

       costxy.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(5)删除元素:    

       costxy.erase(vec.begin()+2);删除第3个元素

       costxy.erase(costxy.begin()+i,costxy.end()+j);删除区间[i,j-1];区间从0开始

    删除vector中的最后一个元素有两种发法:

         costxy.pop_back();//删除最后一个元素
         costxy.erase(costxy.end()-1);//删除最后一个元素

(6)向量大小:costxy.size();
(7)清空:costxy.clear();

4、对于vector里面的一些数据的操作

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

如果vector的是一般的数据,则可以为
   sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).
   可以通过重写排序比较函数按照降序比较,如下:
   定义排序比较函数:
   bool Comp(const int &a,const int &b)
       {    return a>b;  }

如果vector的是结构体的数据,需要对结构体的某个数据进行排序,则可以按照下面的方法进行:

// 对std::sort函数进行改进,进行降序排列 3 2 1
bool GreaterSort (pointinfo a,pointinfo b) { return (a.cost > b.cost); }  

// 对std::sort函数进行改进,进行升序排列 1 2 3
bool LessSort (pointinfo a,pointinfo b) { return (a.cost < b.cost); }

//若选取的是最大值,则用降序排列GreaterSort;若选择的是最小值,则用升序排列LessSort
 sort(costxy.begin(),costxy.end(),GreaterSort);

(参考:http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html  )







https://blog.sciencenet.cn/blog-3134052-1050123.html

上一篇:C++中的vector用法以及相关的说明
下一篇:在VS平台上C++ 程序运行计时
收藏 IP: 124.207.244.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-10 18:51

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部