C++ 之 Vector(容器)初始化高维数组

使用C++标准模版库(STL)中的Vector(向量)可以实现变长数组,实现二维数组,高维数组。下面给出代码实现。

#include<iostream>

#include<vector>

using namespace std;

int main()

{

int len;

cin>>len;

vector<int> array(len);//声明变长数组

for(int i=0;i<len;i++)

array[i]=i;

cout<<array[i]<<"\t";

return 0;

}

那么用vector(向量)怎样实现二维数组呢,下面给出源程序:

#include <iostream>

#include <vector>

#include <iomanip>

using namespace std;

int main()

{

int i,

j,

m, //行数

n; //列数

cout << "input value for m,n:";

cin>>m>>n;

//注意下面这一行:vector<int后两个">"之间要有空格!否则会被认为是重载">>"。

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

for (i = 0; i < m; i++)

for (j = 0; j < n; j++)

vecInt[i][j] = i*j;

for (i = 0; i < m; i++)

{

for (j = 0; j < n; j++)

cout<<setw(5)<<vecInt[i][j]<<":"<<setw(9)<<&vecInt[i][j];

cout<<endl;

}

return 0;

}

这里Vector中元素的内存的地址分配也有同双指针实现的二维数组有同样的特点。不过用Vector的方法比使用双指针简单地多,分配内存空间时会更安全,数组初始化代码也更简单。以下是一个变长三维数组:

#include <iostream>

#include <vector>

#include <iomanip>

using namespace std;

int main()

{

int i,

j,

k,

m, //一维坐标

n, //二维坐标

l; //三维坐标

cout << "input value for m,n,l:";

cin>>m>>n>>l;

vector<vector<vector<int> > > vecInt(m, vector<vector<int> >(n, vector<int>(l)));

for (i = 0; i < m; i++)

for (j = 0; j < n; j++)

for(k = 0; k < l; k++)

vecInt[i][j][k] = i+j+k;

for (i = 0; i < m; i++)

{

for (j = 0; j < n; j++)

{

for(k = 0; k<l; k++)

cout<<setw(5)<<vecInt[i][j][k]<<":"<<setw(9)<<&vecInt[i][j][k];

cout<<endl;

}

cout<<endl;

}

return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 15:14:42

C++ 之 Vector(容器)初始化高维数组的相关文章

谈谈vector容器的三种遍历方法

说明:本文仅供学习交流,转载请标明出处,欢迎转载! vector容器是最简单的顺序容器,其使用方法类似于数组,实际上vector的底层实现就是采用动态数组.在编写程序的过程中,常常会变量容器中的元素,那么如何遍历这些元素呢?本文给出三种遍历方法. 方法一:采用下标遍历 由于vector容器就是对一个动态数组的包装,所以在vector容器的内部,重载了[]运算符,函数原型为:reference operator [] (size_type n);所以我们可以采用类似于数组的方式来访问vector容

vector动态二维数组(容器的容器)占用内存分析

之前在这里写过一篇"C++中的动态二维数组".在C++中没有动态二维(多维)数组.但是根据原理我们可以自己创建. 在看过STL的vector源代码后"<STL源码剖析>---stl_vector.h阅读笔记"后,想到可以用容器的容器来做二维数组. 创建一个2x4的二维数组.想到的办法是:先创建一个容器的容器,外层大小的2(2行),然后里面容器小大为4(4列). int row=2,col=4; vector<vector<int> &g

C++数组和vector容器的比较以及浅析

作为一个C语言程序猿来说,数组是非常重要的,也是必不可少的一种数据组织和存储方式.在C++中却很少使用数组.从根本说主要有以下几个方面: 数据存储方式: (1)数组的内存地址是连续的,也就是说如果你要申请的内存地址必须是连在一起的.数组为每一个元素申请的空间大小相同的,连续的存储空间.对于空间的申请和控制需要我们自己控制. (2)vector也是连续的存储空间.对于空间的申请和控制都由标准库帮我们管理. 空间利用率: (1)数组在定义的时候已经指定了空间的大小,不能改变,除非你新申请一个空间来存

vector容器的用法以及动态数组

vector容器不必去管大小 string申明的数组已经是动态的了 若是int类型的话,需要 cin>>N: int a[N]会出错 ,必须是int *p = new int[N] 然后再手动释放空间

Vector容器 和 iteration 迭代器

vector容器 vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库负责管理存储元素的相关内存.我们把vector称为容器,是因为它可以包含其他对象.一个容器中的所有对象都必须是同一种类型的. 使用vector之前,必须包含相应的头文件.#include <vector> using std::vector; vector是一个类模板(class template).模板允许程序员编写单个类或函数定义,这个类和函数定义可用于不同的数据类型上.

vector容器用法详解

vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组.像数组一样,vector类也用从0开始的下标表示元素的位置:但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化. vector类常用的函数如下所示: 1.构造函数 vector():创建一个空vector vector(int nSize):创建一个vector,元素个数为nSize vector(int nSize,const t& t):创建一个vector,元

C++ STL vector容器学习

STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector,list, deque, set, map等),算法完成特定任务,迭代器用来遍历容器对象,扮演容器和算法之间的胶合剂. 模板类vector 在计算中,矢量(vector)对应数组,它的数据安排以及操作方式,与array非常类似.在C++中,使用vector模板类时,需要头文件包含#include<v

STL学习二:Vector容器

1.Vector容器简介 vector是将元素置于一个动态数组中加以管理的容器. vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲). vector尾部添加或移除元素非常快速.但是在中部或头部插入元素或移除元素比较费时. 2.vector对象的默认构造 vector采用模板类实现,vector对象的默认构造形式 vector<T> vecT; vector<int> vecInt;          //一个存放int的vector容器

把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 相关的内存,因为vetcor是类模版,对应多个不同类型,比如int,string,或者自己定义的数据类型等. 程序开头应如下声明 #include <iostream> #include <vector> #include <string> using std::strin