随着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[]={,,,,,};
vector< int > ivec(arr,arr+);

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

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

或者运用下面形式

int arr[]={,,,,..........};
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[]={,,,........};
vector< int > ivec(begin(arr),end(arr));
for(auto it=ivec.begin();it!= ivec.end();++it)

或者采用

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

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

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

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

int arr[]={,,,};
vector< int > ivec(begin(arr),end(arr));
for(decltype(ivec.size()) i=;i<;++i)

vector的几种初始化和遍历的更多相关文章

  1. vector的几种初始化及赋值方式

    转自https://www.cnblogs.com/quyc/p/12857054.html (1)不带参数的构造函数初始化 //初始化一个size为0的vector vector<int> ...

  2. JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想

    JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...

  3. 第三篇:C++ 中的几种初始化

    前言 阅读C++教材时,想必你听过复制初始化,直接初始化,值初始化这三个概念吧.笔者本人常将其混淆,遂在此记录下它们的具体含义以便日后查阅. 复制初始化( copy-initialization ) ...

  4. C++ 中的几种初始化

    前言 阅读C++教材时,想必你听过复制初始化,直接初始化,值初始化这三个概念吧.笔者本人常将其混淆,遂在此记录下它们的具体含义以便日后查阅. 复制初始化( copy-initialization ) ...

  5. 【汇总】java中数组的声明、初始化及遍历

    java中数组用来存储固定大小的同类型元素 一维数组: 1.数组的声明: //声明一维数组,推荐用第一种 int[] a; int b[]; 2.数据的初始化:有三种初始化方式 (1).静态初始化 / ...

  6. Java连载66-数组的两种初始化方式

    一.数组 1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就 ...

  7. UIImage两种初始化的区别

    UIImage可以通过以下两种方式进行初始化: //第一种初始化方式:[注意使用这种初始化的时候如果是png格式的可以不给后缀名,根据屏幕的的分辨率去匹配图片] UIImage *image = [U ...

  8. django form关于clean及cleaned_data的说明 以及4种初始化

      1.form类的运行顺序是init,clean,validte,save其中clean和validate会在form.is_valid()方法中被先后调用.(这里留有一个疑问,结构完全相同的两个f ...

  9. String的几种初始化方法的区别

    参考了: java中String的两种初始化方法   String a; String aa = ""; String aaa = "123"; String ...

随机推荐

  1. java——红黑树 RBTree

    对于完全随机的数据,普通的二分搜索树就很好用,只是在极端情况下会退化成链表. 对于查询较多的情况,avl树很好用. 红黑树牺牲了平衡性,但是它的统计性能更优(综合增删改查所有的操作). 红黑树java ...

  2. my.资料收集_20170912

    1.终于摸索出平民单开赚钱方法了!![梦幻西游手游吧]_百度贴吧.html http://tieba.baidu.com/p/5323468885?see_lz=1 1.http://tieba.ba ...

  3. loadrunner学习--基础知识

    性能测试相关术语: 1.响应时间:指系统从发出请求开始到客户端接受到所有数据所消耗的时间. 2.并发用户:指同一时刻与服务器进行数据交互的所有用户数量.计算公式F=Nvu x R/T 其中F表示吞吐量 ...

  4. JavaSE---位运算符

    1.Java支持的位运算符有7个: &:按位与 [2个相同取相同.2个不同取0] |:按位或 [2个相同取相同.2个不同取1] ~:按位非 ^:按位异或 [2个相同取0.2个不同取1] < ...

  5. VSCode个人实用插件

    1.汉化插件 Chinese (Simplified) Language Pack for Visual Studio Code 发布者:Microsoft 2.主题插件(IDEA主题) Darcul ...

  6. Android Studio配置及使用OpenCV

      1.下载及目录介绍 进入官网(http://opencv.org/)下载OpenCV4Android并解压(这里是OpenCV-3.2.0-android-sdk).下面是目录的结构图: sdk  ...

  7. 【密码学】CSP的概念

    CSP加密服务提供者(Cryptographic Service Provider)具有一下几个特点: CSP是真正执行密码运算的独立模块 物理上一个CSP由两部分组成:一个动态连接库,一个签名文件 ...

  8. 117、python MySQLdb在windows环境下的快速安装、问题解决方式

    使用Python访问MySQL,需要一系列安装 Linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装 http://blog.csdn.NET/wklken/arti ...

  9. Ubuntu 网速显示,ssh配置

    安装: sudo apt-get install python3-psutil curl git gir1.2-appindicator3-0.1git clone https://github.co ...

  10. ACM-单调队列用于DP优化

    http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 待续