我正在尝试学习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
表示动态数组的数组。现在,我无法理解如何定义数组?
对此有任何帮助将不胜感激。
答案 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;
}