opencv学习---vector的基础知识点

之前一直仿照别人用vector<>,但是一直是仿照着实现功能,然而并不是很清楚它的基础知识,所以今天好好整理一下,便于以后复习,便于需要的人们查看!!

vector:

<1>解释:容器,可以存放各种类型的对象,是一个动态数组,存放各种类型的数据;
         注意:如果要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低;

<2>方式:
        vector<Point2f> ----用于存放float类型的数据,这里是二维点向量,也可以将Point2f换成int等其他类型;
        vector<Point2i> ----用于存放int类型的数据;
        vector<Point2d> ----用于存放double类型的数据;
        vector<vector<Point2f>> points;----表示定义一个二维数组,
                其中的points[0].size(),表示第一行的列数;

<3>基础知道:
 (1)头文件#include<vector>;
 (2)创建vector对象,vector<int> vec;
 (3)尾部插入数字:vec.push_back(a);
 (4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。
 (5)使用迭代器访问元素:
  vector<int>::iterator it;
    for(it=vec.begin();it!=vec.end();it++)
          cout<<*it<<endl;
 (6)插入元素:  vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
 (7)删除元素:    
     vec.erase(vec.begin()+2);删除第3个元素
     vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
 (8)向量大小:vec.size();
 (9)清空:vec.clear();
 (10)begin()与end()函数表示开始第一个和最后一个;

       front()与back()表示从前开始和从后开始;

<4>简单用法:
        (1)vecor<int> data;表示创建了一个vector数组,int为数组元素的数据类型,data为动态数组名;
        (2)data.push_back(m);在data中存入数据m,m可以为单数字、数组:如(2,3)、指针、地址等,并且从data[0]开始存放,依次往后存放
           例如:data.push_back(23);data.push_back(45);  ------则:data[0]=23;data[1]=45;
        (3)data.pop_back(m);在data中高效的移除vector中最后一个数据,m可以为单数字、数组:如(2,3)、指针、地址、结构体等,并且从最后一个开始移除,依次移除;
        (4)Vector作为函数的参数或者返回值时,需要注意其中的“&”绝对不能少:  
            double Distance(vector<int>&a, vector<int>&b) !!!

<5>复杂用法:(注:需要头文件#include<algorithm>)
        (1)reverse----将元素翻转;
             reverse(vec.begin(),vec.end());将元素翻转,即逆序排列!
        (2)sort----排序;
             sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).  
             可以通过重写排序比较函数按照降序比较,如下:         
             bool Comp(const int &a,const int &b)//定义排序比较函数:
{return a>b;}
            调用时:sort(vec.begin(),vec.end(),Comp),这样就降序排序。
       (3)insert()----插入;函数有以下三种用法: 
                 a.在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器
       b.在指定位置loc前插入num个值为val的元素 
                 c.在指定位置loc前插入区间[start, end)的所有元素 
        (4)Vector中元素的输入输出  :http://blog.csdn.net/duan19920101/article/details/50617190

参考博客:

http://blog.csdn.net/duan19920101/article/details/50599468
http://blog.csdn.net/duan19920101/article/details/50617190


  • 6
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值