zoukankan      html  css  js  c++  java
  • vector的几种初始化和遍历

    随着C++11标准的出现,vector出现了新的初始化和遍历用法,但是vs2010和较高版本并没有能完全支持C++11标准,所以我就将它的所有的用法归纳了一下。
    vector的初始化
    vector基本初始化如下:
    vector< T >v1 v1是一个空的vector
    vector< T >v2(v1) v2包含v1所有元素,等价于vector v2=v1;
    vector< T >v3(n,val) v3包含了n个重复元素,每个元素是val

    在C++11标准中出现了下面两种新的初始化方式
    vector< T > v4{a,b,c……} v4中每个元素被赋了相应的值
    vector< T > v4={a,b,c……..} 这个和上面初始化形式一样,和数组初始化形式相似

    由于目前完全支持C++11标准的编译器不多,当要对vector赋予不同初值的时候,我们就需要借助数组的形式来给vector赋予初值。 (也就是以下的方式是c++ 11之前经常采用的方式)
    举个例子:

    1.当数组元素数量有限时

    int arr[]={0,1,2,3,4,5};
    vector< int > ivec(arr,arr+6);

    2.当数组元素数量很多时

    int arr[]={0,1,2,3,4..........};
    size_t cnt=sizeof(arr)/sizeof(int);
    vector< int > ivec(arr,arr+cnt);

    或者运用下面形式

    int arr[]={0,1,2,3,4..........};
    vector< int > ivec(begin(arr),end(arr));

    这个形式在VS2010中可以使用,它采用C++11的标准。

    如果是字符串数组,只需要将int换成string即可,再加上相应赋值
    例如:

    string arr[]={"a","b".........}
    vector< string > ivec(begin(arr),end(arr));

    好了vector的初始化完成了,接着是vector的遍历了;
    vector遍历
    vector的遍历一般使用迭代器

    int arr[]={1,2,3,4........};
    vector< int > ivec(begin(arr),end(arr));
    for(auto it=ivec.begin();it!= ivec.end();++it)

    或者采用

    int arr[]={1,2,3,4........};
    vector< int > ivec(begin(arr),end(arr));
    vector<int>::iterator it;
    for(it=ivec.begin();it!= ivec.end();++it)

    还可以for_each来遍历vector形式,如下:

    int arr[]={1,2,3,4........};
    vector< int > ivec(begin(arr),end(arr));
    for_each(ivec.begin(),ivec.end(),printf);
    //printf是一个函数
    void printf(int a)
    {
    }

    它还可以像数组一样去遍历

    int arr[]={1,2,3,4};
    vector< int > ivec(begin(arr),end(arr));
    for(decltype(ivec.size()) i=0;i<4;++i)
  • 相关阅读:
    CC3000 SmartConfig
    谈谈几个月以来开发android蓝牙4.0 BLE低功耗应用的感受
    CC3000 SPI接口编程介绍
    cc3000+LM3S9B96
    CC3000 主机驱动API介绍
    Wi-FiR CC3000 模块
    修改远程桌面连接端口及修改端口号后如何连接!
    电脑网线/水晶头的连接方法(A类,B类)
    快速切换IP的批处理!
    IE打开报错,提示该内存不能为read的解决办法!
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/6854387.html
Copyright © 2011-2022 走看看