Re: [问题] 函式怎么回传二维或三维阵列

楼主: damody (天亮damody)   2014-04-27 01:12:25
※ 引述《pudding86200 (猫头鹰咕咕)》之铭言:
: 如题
: 算法想要用函式来取得多维矩阵的初始解
: 可是我发现会卡在一个BUG 爬文也看不懂
: 开一个矩阵ini[2][2]
: 以下是我的程式码
: 我只希望在main里面可以呼叫test()然后把矩阵里面的值给存取出来
: #include "stdafx.h"
: #include "stdlib.h"
: #include "iostream"
: using namespace std;
: void test(int* ini)
: {
: ini[0][0]=1;
: ini[0][1]=2;
: ini[1][0]=1;
: ini[1][1]=2;
: }
: int _tmain(int argc, _TCHAR* argv[])
: {
: int ini[2][2]={0};
: test (&ini[0][0]);
: cout<<ini[0][0]<<endl<<ini[0][1];
: system("pause");
: return 0;
: }
: 可是执行出现了一句话
: "注标必须使用在阵列或指标型别上"
: 想请问一下各位高手们我这段程式是哪边错了
int* 不能中括号取两次,这边错了。
// method 1 modify vector 2d
void InitData(std::vector<std::vector<int>>& datas, int s1, int s2)
{
datas.resize(s1);
for (int i=0;i<s1;++i)
{
datas[i] = std::vector<int>(s2, 0);
}
}
// method 2 return vector 2d
std::vector<std::vector<int>> InitData(int s1, int s2)
{
std::vector<std::vector<int>> datas(s1);
for (int i=0;i<s1;++i)
{
datas[i] = std::vector<int>(s2, 0);
}
return datas;
}
// method 3 return pointer
int** InitData(int s1, int s2)
{
int i;
int **Array, *pData;
Array = (int**)malloc(s1*sizeof(int *)+s1*s2*sizeof(int));
for (i = 0, pData = (int *)(Array+s1); i < s1; i++, pData += s2)
Array[i]=pData;
return Array;
}
看心情,随便想都有三种方法,剩下的举三反十。
相信你可以的。
作者: q82419 (q82419)   2014-04-27 01:24:00
vector<std::vector<int>>在旧的compiler要写 vector<std::vector<int> >不然会error XDD

Links booklink

Contact Us: admin [ a t ] ucptt.com