gpt4 book ai didi

c++ array[var][2] 作为类成员

转载 作者:行者123 更新时间:2023-11-30 01:58:34 25 4
gpt4 key购买 nike

我想在一个类中有一个无符号整数数组,它的大小应该是 [var][2],这样用户就可以在运行时选择 var。有没有比分配二维数组(指向分配数组的指针的分配数组)更好的方法?

在我的课上:

unsigned int *(*hashFunc); 

在初始化函数中:

hashFunc = new unsigned int*[var];
for(unsigned int i = 0; i<var; ++i)
hashFunc[i] = new unsigned int[2];

我只想分配一次,我认为这应该是可行的,因为我只有一个未知维度(var 未知,但我从一开始就知道 2)。

谢谢!

最佳答案

如果大小在编译时已知,你应该使用 std::array .如果直到运行时才知道其中一个维度,则应使用 std::vector .

你当然可以组合它们:

std::vector<std::array<unsigned int, 2>> hashFunc;

上面声明了hashFunc是数组的 vector ,数组的大小为 2,类型为 unsigned int ,就像问题中指定的那样。

然后添加一个新的内部数组只需使用 push_back vector 的:

hashFunc.push_back({{ 1, 2 }});

(是的,需要双大括号。构建 std::array 对象的外部,以及实际数组数据的内部。)

或者,如果您想立即设置外部 vector 的大小(例如,如果您(运行时)事先知道大小),您可以这样做,例如

hashFunc = std::vector<std::array<unsigned int, 2>>(var);

在哪里var以上是“第一维度”的大小。现在可以直接访问hashFunc[x][y]其中 xvar 范围内和 y是零或一。

关于c++ array[var][2] 作为类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17256465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com