对vector对象来说,直接初始化的方式适用于3种情况:1.初始值已知且数量少;2.初始值是另一个vector对象的副本;3.所有元素的初始值都一样。此外还有一种更常见的情况是4.创建一个vector对象时并不清楚实际所需元素的个数,元素的值也无法确定。或者元素的初值已知,但如果这些总量较大而各部相同(对于这种情况,更好的处理方法是先创建一个空vector,然后再运行时再利用vector的成员函数push_back向其中添加元素)。

  1.vector<T> v1  v1是一个空vector,它潜在的元素是T类型的,执行默认初始化;

  2.vector<T> v2(v1)  v2中包含有v1所有元素的副本;

  3.vector<T> v2=v1  等价于v2(v1),v2中包含有v1所有元素的副本;

  4.vector<T> v3(n,val)  v3包含了n个重复的元素,每个元素的值都是val;

  5.vector<T>  v4(n)  v4包含了n个重复地执行了值初始化的对象;

  6.vector<T> v5{a,b,c...}  v5包含了初始值个数的元素,每个元素被赋值相应的初始值;

  7.vector<T>={a,b,c...}  等价于v5{a,b,c...}

  ¥¥列表初始化还是元素初始化

  在某些情况下,初始化的真实含义依赖于传递初始值时用的是花括号还是圆括号。例如,用一个整数来初始化vector<int>时,整数的含义可能是vector对象的容量也可能是元素的值。类似的,用两个整数来初始化vector<int>时,这两个整数可能一个是vector对象的容量,另一个是元素的初值,也可能它们是容量为2的vector对象中两个元素的初值。通过花括号或圆括号可以区分上述这些含义:

  vector<int> v1(10);  //v1有10个元素,每个元素的值都是0

  vector<int> v1{10};  //v2有1个元素,该元素的值是10

vector初始化的更多相关文章

  1. C++-二维vector初始化大小方法-备忘

    来源: C++——二维vector初始化大小方法 1.直接用初始化方法 名字为vec,大小为n*m,初始值为0的二维vector. vector<vector<)); 2.用resize( ...

  2. vector 初始化所有方法

    简介:vector可用于代替C中的数组,或者MFC中的CArray,从许多说明文档或者网上评论,一般一致认为应该多用vector,因为它的效率更高,而且具备很好的异常安全性.而且vector是STL推 ...

  3. vector 初始化

    //数组初始化vector int iarray[]={1,2,3,4,5,6,7,8,9,0}; //count: iarray数组个数 size_t count=sizeof(iarray)/si ...

  4. 【c++基础】vector初始化的几种方式

    前言 STL中的vector有几种初始化方式,根据不同的需求选择合适的初始化方式. 源码 // constructing vectors #include <iostream> #incl ...

  5. 数组初始化 和 vector初始化

    ] = {}; 整个数组都初始化为0 vector<); 整个vector初始化为1 如果你定义的vector是这样定义的: vector<int> B; 去初始化,千万不要用: ; ...

  6. C++ vector初始化方式

    C++的初始化方法很多,各种初始化方法有一些不同. (1): vector<int> ilist1; 默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacit ...

  7. C++——二维vector初始化大小方法

    初始化二维vector,为r*c的vector,所有值为0.1.直接用初始化方法(刚开始没想到) vector<vector<int> > newOne(r, vector&l ...

  8. vector初始化的几种方式-STL

     vector<int>::iterator int_ite;  vector<string>::iterator string_ite;  //vector<T> ...

  9. C++学习笔记1-使用数组进行vector初始化

    另外,如果是定义的时候,可以直接指定复制.比如:int s[5]={1,2,3,4,5};vector<int> v(s,s+5);就可以啦.

随机推荐

  1. HDU 5901 Count primes (1e11内的素数个数) -2016 ICPC沈阳赛区网络赛

    题目链接 题意:求[1,n]有多少个素数,1<=n<=10^11.时限为6000ms. 官方题解:一个模板题, 具体方法参考wiki或者Four Divisors. 题解:给出两种代码. ...

  2. iOS 没有安装对应客户端,不应显示对应的图标

    现在很多APP为了让用户更加快捷方便注册,都会使用第三方进行登录,例如QQ/微信/淘宝等.但是上线审核被拒,大致会出现以下内容: Additionally, we found that your ap ...

  3. iOS高效调试

    写代码难免出现bug. 储备些调试技能绝对能够提高你的工作效率,让bug无所遁形.下面就和大家分享一些我在工作中常用的iOS调试小技能. 1. 打印 最简单,基础的调试方法就是打印日志了.贴出两段封装 ...

  4. poj2492(种类并查集/各种解法)

    题目链接: http://poj.org/problem?id=2492 题意: 有t组测试数据, 对于每组数据,第一行n, m分别表示昆虫的数目和接下来m行x, y, x, y表示教授判断x, y为 ...

  5. Java观察者模式(Observer模式)

    Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循 ...

  6. sql学习笔记--存储过程

    存储过程(stored procedure)有时也称sproc,它是真正的脚本,更准确地说,它是批处理(batch),但都不是很确切,它存储与数据库而不是单独的文件中. 存储过程中有输入参数,输出参数 ...

  7. C#关键字params

    using System; using System.Threading; namespace Test { /// <summary> /// params用法: 1.用来修饰方法的参数 ...

  8. .netWeb方向:语言+技术

    常用语言+技术 C# T-Sql ADO.NEt JavaScript Asp.Net MVC HTML CSS DOM AJAX Entity Framework Regular expressio ...

  9. 如何把一个android工程作为另外一个android工程的lib库

    http://zhidao.baidu.com/question/626166873330652844 一个工程包含另一个工程.相当于一个jar包的引用.但又不是jar包反而像个package 在网上 ...

  10. Linux Shell 高级编程技巧3----运行级别脚本介绍

    3.运行级别脚本介绍    3.1.运行级别        运行级别介绍:            0    关机            1    单用户模式            2    多用户模式 ...