C++中的vector如何实现二维?

如题。。。
在C++中二维的数组可以很容易的实现
C++primer中介绍数组时提到基于内置数组的程序易出错,建议用vector代替,那么请问怎样用一个二维的vector来代替二维的数组呢

又:vector<int> ivec1(3);
vector<ivec1> ivec2d(3);
编译不会通过
提示:error C2974: 'vector' : invalid template argument for '_Ty', type expected
请指教。。。

你哪个错误原因在:

vector<ivec1> ivec2d(3);

<>里面是个类型

而ivec1只是个对象 应该改为:vector<vector<int> > ivec2d

在顺便贴个转换的例子:

#include "stdafx.h"

#include <vector>

#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{

int arrby[5][5]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};

vector<int> clildrec(5);

vector<vector<int> > rec;

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

{

vector<int> clildrec(*(arrby+i),*(arrby+i)+5);

rec.push_back(clildrec);

}//这个就完成了2维数组到vector的复制;

vector<vector<int> >::iterator iter=rec.begin();

vector<int>::iterator clilditer;

while(iter!=rec.end())

{

clilditer=iter->begin();

while(clilditer!=iter->end())

{

cout<<*clilditer<<",";

clilditer++;

}

cout<<endl;

iter++;

}

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-04-26
typedef vector<int> VInt;
typedef vector<VInt> VArray;

VArray array2;
array2就是2维的了
第2个回答  2008-04-26
vector< vector<int> > VArray_2D;
嵌套声明即可
第3个回答  2019-05-03
你哪个错误原因在:
vector<ivec1>
ivec2d(3);
<>里面是个类型
而ivec1只是个对象
应该改为:vector<vector<int>
>
ivec2d
在顺便贴个转换的例子:
#include
"stdafx.h"
#include
<vector>
#include
<iostream>
using
namespace
std;
int
main(int
argc,
char*
argv[])
{
int
arrby[5][5]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};
vector<int>
clildrec(5);
vector<vector<int>
>
rec;
for(int
i=0;i<5;i++)
{
vector<int>
clildrec(*(arrby+i),*(arrby+i)+5);
rec.push_back(clildrec);
}//这个就完成了2维数组到vector的复制;
vector<vector<int>
>::iterator
iter=rec.begin();
vector<int>::iterator
clilditer;
while(iter!=rec.end())
{
clilditer=iter->begin();
while(clilditer!=iter->end())
{
cout<<*clilditer<<",";
clilditer++;
}
cout<<endl;
iter++;
}
return
0;
}

mfc c++ 初学,vector怎么最简单地使用二维数组vector<int,int> vec...
1.不知道是不是你写错了,正确的二维数组是vector<vector<int> >vect[常量]。2.个人觉得使用typedef表示方法好理解点,直接把vector<vector<int> >看作一个整数,如下:typedef VEC vector<vector<int> >;2.操作:VEC vec[常量]; vec[0].push_bac(1);跟一般类型的二维数组一样去操作。

c++ 用vector 定义二维数组
vector<vector<int>> v;这个就是"二维",可以用v.size()直接得到行数 argv[] 这个也是"二维"。

C++Vector放一个普通二维数组
你可以把数组封装到一个struct或者class里,然后用这个struct或者class当作vector的元素,也可以用vector的vector解决你的问题,总之就是不能直接用数组当作vector的元素

C++ STL中 Vector的基本用法
首先,我们来创建一个一维vector。通过使用`std::vector nums;`,我们定义了一个空的整型一维vector。通过`nums.push_back(value);`,可以向vector中添加元素。例如,`nums.push_back(5);`将添加整数5。若要删除元素,可以使用`nums.erase(nums.begin() + index);`,其中index为要删除元素的索引位...

C++中的vector如何实现二维?
vector<ivec1> ivec2d(3);<>里面是个类型 而ivec1只是个对象 应该改为:vector<vector<int> > ivec2d 在顺便贴个转换的例子:include "stdafx.h"include <vector> include <iostream> using namespace std;int main(int argc, char* argv[]){ int arrby[5][5]={{1,2,3,4,5},{1,2...

C++ 如何将二维数组转换为vector?
在 C++ 中,可以使用 STL 库中的 vector 来存储二维数组。可以先定义一个空的 vector,然后通过循环来将二维数组的每一行添加到 vector 中。示例代码如下:include <vector> using namespace std;int array[length1][length2];vector<vector<int>> vec;for (int i = 0; i < length1; i++) ...

C++中2维vector的问题.
和数组一样 vector< vector<int> >a a[][]的a[]返回的就是vector<int>的引用,唯一注意的就是不要用指针递变,因为vector不一定是顺序的。

如何用vector实现双层数组
vector本来就是可以用来代替一维数组的,这里只介绍用它来代替二维的数组。二维以上的可以依此类推。我们知道,C++的template参数是可以嵌套定义的,你可以这样定义一个模板的Instance vector <vector <int> > array2(3);\/\/注意> 和> 之间的空格。这就是我们的关键,array2可以保存3个向量,向量...

c++ 如何将一个vector内容赋值给另一个vector
大致有一下几种方法实现用于把一个vector赋值给另一个vector:方法1:vector<int > v1(v2);\/\/声明方法2:使用swap进行赋值:vector<int > v1();v1.swap(v2);\/\/将v2赋值给v1,此时v2变成了v1方法3:使用函数assign进行赋值:vector<int > v1;\/\/声明v1v1.assign(v2.begin(), v2.end()...

c++怎么初始化一个装引用的二维vector呢?
对于vector等容器的批量元素非默认值初始化,C++0x提供了std::initializer_list参数的构造函数,不过对于现行的C++03,要是元素能默认初始化,可以resize;否则只能老老实实的循环插入了。这里每个vector<A>都默认初始化为空向量,不符合要求……因为A可以默认初始化,所以构造100元素的二维向量后直接对每个...

相似回答