Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何创建动态大小的链表数组?_C++_Arrays_List - Fatal编程技术网

C++ 如何创建动态大小的链表数组?

C++ 如何创建动态大小的链表数组?,c++,arrays,list,C++,Arrays,List,我需要在运行时为哈希表分配创建一个链表数组。我们给出的示例代码只允许创建静态大小的数组,我不知道如何修改它以使用变量,因为我所做的一切都导致了错误 示例代码: typedef std::list<int> INT_LIST; typedef INT_LIST* INT_LIST_POINTER; int size = 13; INT_LIST_POINTER myArray[size]; INT_LIST_POINTER tmpPtr; // initialize the array

我需要在运行时为哈希表分配创建一个链表数组。我们给出的示例代码只允许创建静态大小的数组,我不知道如何修改它以使用变量,因为我所做的一切都导致了错误

示例代码:

typedef std::list<int> INT_LIST;
typedef INT_LIST* INT_LIST_POINTER;
int size = 13;
INT_LIST_POINTER myArray[size];
INT_LIST_POINTER tmpPtr;
// initialize the array to point to empty lists
for (int i=0; i<size; i++){
tmpPtr = new INT_LIST;
myArray[i] = tmpPtr;
}

它表示没有匹配这些操作数。

如果这是C++,为什么不使用STD:< /P>

如果这是C++,为什么不使用STD:< /P>


您可以分配一个大小为p的数组:

然后继续初始化n个元素:

for (int i=0; i<n; i++){
除非p和n是相同的东西,否则这看起来不对


注意:完成后不要忘记删除[]myArray。

您分配了一个大小为p的数组:

然后继续初始化n个元素:

for (int i=0; i<n; i++){
除非p和n是相同的东西,否则这看起来不对


注意:完成后不要忘记删除[]myArray。

这显然是一个好答案,但OP将问题标记为家庭作业,因此如果他不能在std::.中使用任何内容,我也不会感到惊讶。忘记包括这两行typedef std::list INT\u list;typedef INT_LIST*INT_LIST_指针@他使用std::list所以std::vector myArray;应该也可以。这显然是一个很好的答案,但OP将问题标记为家庭作业,因此如果他不能在std::.中使用任何内容,我不会感到惊讶。忘记包括这两行typedef std::list INT_list;typedef INT_LIST*INT_LIST_指针@他使用std::list所以std::vector myArray;应该也可以。更重要的是,这再次分配了一个固定大小的数组。你也是正确的,我已经更改了原始帖子中的措辞,我不需要它是完全动态的。更重要的是,这再次分配了一个固定大小的数组。你也是正确的,我已经更改了原始帖子中的措辞,我不需要它是完全动态的。检查STD::VC.ReStand和STD::VoCord.PurpSeBoestMead。如果你想让你的老师安静下来,指出样本代码不是有效的C++。它应该是常量int size=13;。为了演示这一点,可以使用GCC和-pedantic errors选项进行编译,以禁用非标准语言扩展。按照惯例,所有大写标识符都用于表示短时的模板参数,例如T、U、T2或预处理器宏。它们不应用于类型。这是一件小事,但足以让我觉得无论是谁给了你你的示例代码都没有线索。此外,当您只需要一个std::list数组时,为什么还要有一个指向std::list的指针数组呢?它的效率较低,维护性较差。注释-代码-另一个用于删除的循环——从SAMPLE中丢失。签出STD::VC.ReStand和STD::VECCOR.PUPYSACKBACK方法。如果您想结束老师,请指出示例代码不是有效的C++。它应该是常量int size=13;。为了演示这一点,可以使用GCC和-pedantic errors选项进行编译,以禁用非标准语言扩展。按照惯例,所有大写标识符都用于表示短时的模板参数,例如T、U、T2或预处理器宏。它们不应用于类型。这是一件小事,但足以让我觉得无论是谁给了你你的示例代码都没有线索。此外,当您只需要一个std::list数组时,为什么还要有一个指向std::list的指针数组呢?它的效率和可维护性较低。注意:示例中缺少释放代码(另一个delete循环)。
std::vector<std::list<MyClass> > x;
INT_LIST_POINTER myArray = new INT_LIST[p];
for (int i=0; i<n; i++){