一维与二维向量vector的使用

 

在之前一段之间学习相机标定的时候,经常碰到二维向量,查阅了许多博客和相关书籍,书本上只提及到一维向量,二维向量没有相关介绍。网上的博客大多也都写的一知半解,很粗糙,晦涩难懂。今天在几篇好的博文中,又学习了下,有些收获感悟,做下记录,方便以后自己的查阅与学习。

可将向量(vector)视为能在程序运行时改变长度(增大和缩小)的数组。

  1. 初始化向量
     vector a ;                                //声明一个int型向量a
     vector a(10) ;                            //声明一个初始大小为10的向量
     vector a(10, 1) ;                         //声明一个初始大小为10且初始值都为1的向量
     vector b(a) ;                             //声明并用向量a初始化向量b
     vector b(a.begin(), a.begin()+3) ;        //将a向量中从第0个到第2个(共3个)作为向量b的初始值

也可以用数组来初始化向量

     int n[] = {1, 2, 3, 4, 5} ;
     vector a(n, n+5) ;              //将数组n的前5个元素作为向量a的初值
     vector a(&n[1], &n[4]) ;        //将n[1] - n[4]范围内的元素作为向量a的初值

    2. 向量元素的输出和访问

#include
#include
using namespace std ;

int main()
{
    vector a(10, 0) ;      //大小为10初值为0的向量a

    //对其中部分元素进行输入
    cin >>a[2] ;
    cin >>a[5] ;
    cin >>a[6] ;

    //全部输出
    int i ;
    for(i=0; i

   3. 向量的基本操作

1>. a.size()                 //获取向量中的元素个数


2>. a.empty()                //判断向量是否为空


3>. a.clear()                //清空向量中的元素


4>. 复制
        a = b ;            //将b向量复制到a向量中


5>. 比较
        保持 ==、!=、>、>=、<、<= 的惯有含义 ;
        如: a == b ;    //a向量与b向量比较, 相等则返回1


6>. 插入 - insert
        ①、 a.insert(a.begin(), 1000);            //将1000插入到向量a的起始位置前
        
        ②、 a.insert(a.begin(), 3, 1000) ;        //将1000分别插入到向量元素位置的0-2处(共3个元素)
        
        ③、 vector a(5, 1) ;
            vector b(10) ;
            b.insert(b.begin(), a.begin(), a.end()) ;     //将a.begin(), a.end()之间的全部元素插入到b.begin()前


7>. 删除 - erase
        ①、 b.erase(b.begin()) ;                     //将起始位置的元素删除
        ②、 b.erase(b.begin(), b.begin()+3) ;        //将(b.begin(), b.begin()+3)之间的元素删除


8>. 交换 - swap
        b.swap(a) ;            //a向量与b向量进行交换

   4. 二维向量

如果一个向量的每一个元素是一个向量,则称为二维向量,如下:

vector> b(3, vector(4));        //创建一个3*4的int型二维向量

将构造一个二维向量b,它含有三个元素,每个元素含有4个int型元素的向量。编译器两次调用vector的构造函数构造对象b,第一次调用构造函数构造了一个无名的含有4个0的vector对象:

[0] [1] [2] [3]
0 0 0 0

第二次调用构造函数,以这个无名向量为初值初始化它的三个元素,结果是:

b [0] [1] [2] [3]
[0] 0 0 0 0
[1] 0 0 0 0
[2] 0 0 0 0

b[i] 表示第 i (i=0,1,2) 行的元素组成的向量。b.size()的值是3,b[0].size()的值是4。

    vector< vector > b(10, vector(5, 0)) ;

    //对部分数据进行输入
    cin>>b[1][1] ;
    cin>>b[2][2] ;
    cin>>b[3][3];

    //全部输出
    int m, n ;
    for(m=0; m < b.size(); m++)           //b.size()获取行向量的大小
    {
        for(n=0; n < b[m].size(); n++)    //获取向量中具体每个向量的大小
            cout << b[m][n] << " " ;
        cout << "\n" ;
    }

 

本博客参考如下:

c++基础之向量Vector

用vector实现二维向量

 

 

你可能感兴趣的:(C++)