如何在C ++中创建动态数组Array

时间:2012-11-02 08:56:13

标签: c++

我正在尝试学习C ++并尝试编写一个简单的哈希表的代码,如下面的结构:

array[0][0] array[0][1] array[0][2]
key 1        value 1      value 2

array[1][0] array[1][1] 
key 2        value 3     

array[2][0] array[2][1] array[2][2]
key 3        value 4      value 5

表示动态数组的数组。现在,我无法理解如何定义数组?

对此有任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:5)

如果确实确实需要创建动态数组的动态数组,则必须使用new关键字为两个数组执行此操作。例如:

// an array of int pointers... each points to the start of an array
int** arrays = new int*[10]; 
arrays[0] = new int[99]; // populate the first element of the array of arrays
arrays[1] = new int[47]; // arrays don't have to be the same size.

当然我强烈建议不要这样做。您必须记得在delete[]arrays本身的每个成员上使用arrays

你真的应该使用内置的std::vector类型。这就是为什么它在那里(我投票给其他答案!)。

就像一张纸条,这也不是连续的记忆。此外,如果您确实希望成员数组的大小相同,则可以在for循环中分配内存。

答案 1 :(得分:4)

在C ++中,您将使用std::vector<T>并嵌套其中两个以获得2D数组。

 std::vector<std::vector<my_type>> vec;
 std::vector<my_type> v;
 vec.push_back(v);
 v.push_back(mytype);

答案 2 :(得分:3)

创建vector <vector <T> >

例如

vector <vector <string> > array;

vector <string> temp;
temp.push_back(key1);
temp.push_back(value1);
temp.push_back(value2);
array.push_back(temp);
.
.
.

答案 3 :(得分:0)

这是旧的,我确信我不会写任何海报在他们脑海中不知道的答案,但OP看起来他正在为家庭作业做作业。我的作业要求我在不使用任何STL资源的情况下编写例程。在这种情况下,这里唯一可能的答案是第一个。一开始的家庭作业不是效率,而是展示教材的使用。

不幸的是,很多时候他们想要你展示的内容从未在课程中说明。 这使得像这样的OP挖掘网络很难找到参考。很难找到,因为没有人按照他们要求的方式去做。

我按照这个链接,因为标题让我相信我会找到动态数组的静态数组的资源。因此,我会发布该应用程序,其他人正在寻找该引用。

int main()
{

    int* time[2];

    int userInp;

    userInp = 5;

    time[0] = new int[userInp];

    time[0][1] = 6;

    cout << time[0][1];

    delete time[0];

    return 0;   
}