0

我想要一个数组int candidates[9][],其中第一个维度是已知的(9),第二个维度取决于执行。

我发现分配数组的方法如下:

int *candidates[9]; /* first allocation at declaration */
for(int i=0;i<9;i++) candidates[i] = new int[6]; /* allocation at execution */

但是当我像那样使用它并尝试访问时candidates[i][j],它不起作用。我使用返回和 int[] 大小正确candidate[i]的函数进行初始化,但其内容是错误的。fun()candidate[i][j]

candidates[0] = fun();

我不明白我错在哪里......谢谢你的帮助:-)

4

3 回答 3

1

尝试使用 int*candidates[9]而不是int candidates[9][]它应该可以工作。

于 2013-01-14T10:03:46.407 回答
0

为什么不试试vectorSTL 中的模板类...代码更整洁、更全面...

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> arrayOfVecs[9];

    //use each array to put as many elements you want, each one different
    arrayOfVecs[0].push_back(1);
    arrayOfVecs[1].push_back(100);
    .
    .
    arrayOfVecs[1].push_back(22);
    arrayOfVecs[0].pop_back();
    arrayOfVecs[8].push_back(45);

    cout<<arrayOfVecs[1][0]<<endl;//prints 100

    return 0;
}

带有指针数组

int main()
{
    int* arrayOfPtrs[9];

    for(int index = 0;index<9;index++)
    {
        int sizeOfArray = //determine the size of each array
        arrayOfPtrs[index] = new int[sizeOfArray];

        //initialize all to zero if you want or you can skip this loop
        for(int k=0;k<sizeOfArray;k++)
            arrayOfPtrs[index][k] = 0;

    }

    for(int index = 0;index<9;index++)
    {
        for(int k=0;k<6;k++)
            cout<<arrayOfPtrs[index][k]<<endl;
    }

    return 0;

}

于 2013-01-14T10:22:01.257 回答
0

尝试int **candidates=0;后跟candidates = new int *[9] ;.

代码:

#include <iostream>
using namespace std;

int main(void)
{


    int **candidates=0;//[9]; /* first allocation at declaration */
    candidates = new int *[9] ;
    for(int i=0;i<9;i++) candidates[i] = new int ; /* allocation at execution */



    for(   i = 0 ; i < 9 ; i++ )
    {
        for( int  j = 0 ; j < 9 ; j++ )
        {

            candidates[i][j]=i*j;
            cout<<candidates[i][j]<<" ";
        }
        cout<<"\n";
    }



    cout<<" \nPress any key to continue\n";
    cin.ignore();
    cin.get();

   return 0;
}
于 2013-01-14T10:38:16.183 回答