gpt4 book ai didi

C++:使用指向数组的指针

转载 作者:行者123 更新时间:2023-11-30 04:27:22 25 4
gpt4 key购买 nike

我正在努力研究声明、创建和操作指向列表对象数组的指针所需的语法。我正在为类(class)作业创建哈希表模板类,使用链接来处理冲突。

我的哈希表应该是一个 list 对象数组。 std::list 是唯一允许我用于赋值的标准库数据类,因此 vector 不可用。

我的问题是:如何声明指向 std::list 数组的指针?我有:

private:
std::list<T> * table;

如何创建数组?我有:

table = new std::list<T>[3]; // start with table size 3

我认为我有声明和构造权,但我不是 100% 确定。最后,我如何与列表交互?我有:

    for (int i = 0; i < _tableSize; i++) { // _tableSize is the array's size
if (!table[0][i].empty()) {
table[0][i].push_back(thing);
}
}

不知何故,table[0][i] 访问 table 指向的数组单元格似乎是错误的。它应该是什么样子?

最佳答案

tablestd::list* , table[i][j]表示 (table + i)->operator[](j) ;也就是说,它在 j 上调用一个成员函数(带有参数 std::list )从地址 table + i 开始的对象.

因此,自 std::list不会重载 [] , table[0][i].empty()是错误的(如果 T 中的 std::list<T> 没有成员函数 empty 则双重错误)。

很快,我认为您需要的是一个简单的 table[list_index_on_array].empty()检查是否为空。

其他一切正常

关于C++:使用指向数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10964692/

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