vector的初始化有很多方式,在N维初始化时还会一些容易出现错误的地方。下面进行总结

以下的总结均以int作为模板参数

一维vector的初始化

vector的构造函数通常来说有五种,如下:

  1. vector():创建一个空vector
  2. vector(int nSize):创建一个vector,元素个数为nSize
  3. vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t
  4. vector(const vector&):复制构造函数
  5. vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中

注意第三条,如果传入的是两个参数的话,第一个参数是大小,第二是个初值。

下面为测试代码以及运行结果:

#include<iostream>
#include<vector>
using namespace std; int main(){
////////////////
//构造函数部分
//////////////// //空vector
vector<int> vec1();
cout<<"vec1[0] = "<<vec1[0]<<endl;
//构造一行空vector
vector<int> vec2(1);
cout<<"vec2[0] = "<<vec2[0]<<endl;
//构造一行指定值得vector
vector<int> vec3(5,1);
cout<<"vec3[0-5] = ";
for(int i=0;i<5;i++){
cout<<' '<<vec3[i]<<' ';
}
cout<<endl;
//利用拷贝构造函数构造
vector<int> vec4(vec3);
cout<<"拷贝构造 vec4[0-5] = vec3[0-5] = ";
for(int i=0;i<5;i++){
cout<<' '<<vec4[i]<<' ';
}
cout<<endl;
//复制前闭后开的一段到vector中
int a[5]={1,2,3,4,5};
vector<int> vec5(a,a+5);
cout<<"vec5[0-5] = ";
for(int i=0;i<5;i++){
cout<<' '<<vec5[i]<<' ';
}
cout<<endl;
}

结果如下:

二维vector的初始化

先看怎么写:

vector<vector <int> > ivec(m ,vector<int>(n));

简单来说就是要利用上面的第三种方式,让每个元素的初值是一个一维的vector。另外前面的模板参数里面也是一个嵌套的模式。

这里有一点要非常注意,有的编译器在int后面的两个> >之间一定要有一个空格,否则编译器会报错,因为它会认为>>是一个c++的运算符(有的不用这样。

C++STL中vector的初始化的更多相关文章

  1. STL中vector、list、deque和map的区别

    1 vector     向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...

  2. 【转】STL中vector、list、deque和map的区别

    1.vector 向量 相当于一个数组 在内存中分配一块连续的内容空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数 ...

  3. C++的STL中vector内存分配方法的简单探索

    STL中vector什么时候会自动分配内存,又是怎么分配的呢? 环境:Linux  CentOS 5.2 1.代码 #include <vector> #include <stdio ...

  4. C++ STL中vector(向量容器)使用简单介绍

    原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相 ...

  5. STL中 vector 和 list 一些特性

    STL中的vector特点是: 其容量在需要时可以自动分配,本质上是数组形式的存储方式.即在索引可以在常数时间内完成.缺点是在插入或者删除一项时,需要线性时间.但是在尾部插入或者删除,是常数时间的. ...

  6. STL中vector的赋值,遍历,查找,删除,自定义排序——sort,push_back,find,erase

    今天学习网络编程,那个程序中利用了STL中的sort,push_back,erase,自己没有接触过,今天学习一下,写了一个简单的学习程序.编译环境是VC6.0         这个程序使用了vect ...

  7. [转]STL中vector转数组(实际是数组的指针)

    感谢:http://topic.csdn.net/t/20050429/20/3976956.html 感谢:http://yzyanchao.blogbus.com/logs/47796444.ht ...

  8. 【算法专题】工欲善其事必先利其器—— C++ STL中vector(向量/不定长数组)的常用方法总结

    #include<iostream> #include<cstdio> #include<string> #include<vector>//不定长数组 ...

  9. (转载)C++STL中vector容器的用法

     vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说vec ...

随机推荐

  1. C语言学习笔记之一个程序弄清&&、||、i++、++i

     由此程序可以看出, ++a是先执行自加,再把值赋值给c,所以c就是a+1=10+1=11 b++是先做赋值运算,也就是先d=b,再b自加,所以d=b(原先)=5 a和b都执行自加,所以a=11,b= ...

  2. Java单元测试 Junit TestNG之介绍

    Junit是Java中默认的单元测试框架,通过注解的方式去识别测试方法 JUnit4 JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @BeforeClass 全局只会执行一次,而且 ...

  3. AlgorithmMan,一套免费的算法演示神器

    概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/971 访问.  文章末尾附带GitHub开源下载地址. 0.概述 ...

  4. Vue $nextTick的一个使用场景

    $nextTick 官方解释 在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM 使用场景 在页面上有2个表单元素和2个按钮 btnRequiredFi ...

  5. 题解 P1407

    建图方式:旧关系女人连男人,现关系男人连女人(当然,反过来也可以) 原因可以这样考虑: 如果一个男的把女的绿了,那么这个女人就会去找一个她曾经交往过的男人,也就是在这种情况下,某种"影响&q ...

  6. 学习Python(新手教程链接)

    1.这个是地址: https://www.ggdoc.com/cHl0aG9uIG1zaeaYr_S7gOS5iA2/NTY4Nzc1MWQxMDJkZTJiZDk3MDU4OGE20/

  7. 学长小清新题表之UOJ 14.DZY Loves Graph

    学长小清新题表之UOJ 14.DZY Loves Graph 题目描述 \(DZY\)开始有 \(n\) 个点,现在他对这 \(n\) 个点进行了 \(m\) 次操作,对于第 \(i\) 个操作(从 ...

  8. 记一次mysql数据库被勒索(上)

    家里搞了台旧电脑做NAS,安装了nextcloud,选择了mysql做为数据库. 当时也没有想太多,mysql数据库密码随便设置了个123456,用的一切正常. 然后,听说可以找电信申请换个公网IP的 ...

  9. JDK1.8源码学习-ArrayList

    JDK1.8源码学习-ArrayList 目录 一.ArrayList简介 为了弥补普通数组无法自动扩容的不足,Java提供了集合类,其中ArrayList对数组进行了封装,使其可以自动的扩容或缩小长 ...

  10. Vue学习(十三)模版引擎算是预处理器吗?

    前言 今天在看vue-loader预处理器配置相关的内容,突然看到了Pug,然后有了一个疑问:模版引擎原来是预处理器吗? 答案是:YES 说明 这里重点讨论使用不同的js模板引擎作为预处理器, 下面示 ...