C++中的vector如何实现二维?
来源:百度知道 编辑:UC知道 时间:2024/06/22 10:53:08
如题。。。
在C++中二维的数组可以很容易的实现
C++primer中介绍数组时提到基于内置数组的程序易出错,建议用vector代替,那么请问怎样用一个二维的vector来代替二维的数组呢
又:vector<int> ivec1(3);
vector<ivec1> ivec2d(3);
编译不会通过
提示:error C2974: 'vector' : invalid template argument for '_Ty', type expected
请指教。。。
在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();