C++ vector 实现二维数组

在STL中Vector这一容器,无论是在封装程度还是内存管理等方面都由于传统C++中的数组。本文主要是关于使用Vector初始化、遍历方面的内容。其他二维的思想也是类似的。

这里简单叙述一下C++ 构建二维动态数组

int **p;
p = new int*[10];    //注意,int*[10]表示一个有10个元素的指针数组
for (int i = 0; i < 10; ++i)
{
    p[i] = new int[5];
}

定义一个二维整形数组并初始化:

vector<vector<int> > array(m); //这个m一定不能少//vector<int> array[m];
//初始化一个m*n的二维数组
for(int i=0;i<m;i++) {
    array[i].resize(n);
}//遍历赋值for(i = 0; i < array.size(); i++) {   for (j = 0; j < array[0].size();j++) {   array[i][j] = (i+1)*(j+1); } }

  

http://blog.csdn.net/a819825294/article/details/52088732

http://blog.csdn.net/duan19920101/article/details/50617190/

https://www.cnblogs.com/ranjiewen/p/5294221.html

原文地址:https://www.cnblogs.com/curo0119/p/8508791.html

时间: 2024-10-09 16:08:10

C++ 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 实现二维数组时, 在类的头文件中定义时遇到&quot;应输入类型符&quot;的问题?

见下,当我在类的声明文件中定义二维vector时,提示我应输入类型说明符; 但是相同的格式定义,在类中将二维vector修改为在源文件中定义就可以顺利通过,并顺利执行打印 打印结果如下: 望大神来解惑!

vector申请二维数组

vector<vector<int> >f(m,vector<int>(n));//类似于a[m][n] vector<vector<int> >f(m,vector<int>(n,1));//类似于a[m][n]且初始值全为1 vector<int>f(m,1);//申请一维动态数组 vector内部已经包含了 new和delete操作,使用前需要使用头文件#include<vector> 原文地址:http

Java的Vector的二维数组的定义及初始化

map=new Vector<Vector<Integer>>(m); for(int i=0;i<m;++i) { Vector<Integer>temp=new Vector<Integer>(); for(int j=0;j<m;++j) { temp.add(-1); } map.add(temp); } 原文地址:https://www.cnblogs.com/z2529827226/p/11620913.html

动态创建二维数组

vector创建二维数组 初始化二维数组 vector<vector <int> > ivec(n ,vector<int>(m)); //n*m的二维vector vector<vector <int> > ivec(n , vector<int>(m, 0)); //n*m的二维vector,所有元素为0 动态创建m*n的二维 方法一: vector<vector <int> > ivec; ivec.re

C++二维数组的动态声明

int **a  =  new int* [m]   //分配一个指针数组,将其首地址保存在a中   . for(int i = 0; i < m; i++)   //为指针数组的每个元素分配一个数组 a[i] = new int [n]; 相当于产生了一个二维数组 a[m][n]了 静态声明的数组可以有公式(假设也是m行n列) b[i][j] = b[i*n +j] 这是因为数组b是连续的一片内存,而动态声明的数组任意的a[k]都是一个int*类型,即一个地址,所以只能a[i][j]或者*(*

&lt;细节&gt;动态创建二维数组

今天在做一个关于数组相似度的题目,需要动态创建二维数组,刚开始想用常规的int a[ ][ ]建立,但很快就发现行不通,这种常规数组必须在编译前指定数组的维数,而这个题目在的维数必须在运行中计算得出,于是想到采用new来建立动态二维数组,这个方法行得通,但是很麻烦,也不太利于理解,后面决定采用vector< vector< int > >方法来创建,简单了不少,下面对两种方法都进行一下总结. 1.使用vector创建二维数组 #include <iostream> #i

C++ 二维数组

普通二维数组 : 类名 标识符[int][int].如 int a[5][5]; 用vector实现二维数组的方法: vector<vector<类名>  > 标识符: vector<vector<类名>  > 标识符(int a ,vector<类名>(int b)); #ifndef __GA_H#include<vector>#include"City.h"#endif // !1#define __GA_H

C++ vector二维数组

C++ 构建二维动态数组 int **p; p = new int*[10]; //注意,int*[10]表示一个有10个元素的指针数组 for (int i = 0; i < 10; ++i) { p[i] = new int[5]; } 这样就构成10*5的数组 vector二维数组 int i,j; vector<vector<int>> array(5); for (i = 0; i < array.size(); i++) array[i].resize(3)