Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.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++很陌生,我想教自己如何实现哈希表(我知道我可以使用无序的映射,但是我在挑战自己)。现在我有一个结构向量(cell),它保存了特定于个人的信息。我有一个PrintTable函数,我想用它打印出表中每个项的每个结构_C++ - Fatal编程技术网

打印C++;哈希表 我对C++很陌生,我想教自己如何实现哈希表(我知道我可以使用无序的映射,但是我在挑战自己)。现在我有一个结构向量(cell),它保存了特定于个人的信息。我有一个PrintTable函数,我想用它打印出表中每个项的每个结构

打印C++;哈希表 我对C++很陌生,我想教自己如何实现哈希表(我知道我可以使用无序的映射,但是我在挑战自己)。现在我有一个结构向量(cell),它保存了特定于个人的信息。我有一个PrintTable函数,我想用它打印出表中每个项的每个结构,c++,C++,打印C++;哈希表 我对C++很陌生,我想教自己如何实现哈希表(我知道我可以使用无序的映射,但是我在挑战自己)。现在我有一个结构向量(cell),它保存了特定于个人的信息。我有一个PrintTable函数,我想用它打印出表中每个项的每个结构成员。但是,我似乎无法访问结构(单元格)的特定成员。我做错了什么 #include <iostream> #include <string> #include <vector> struct cell {

打印C++;哈希表 <>我对C++很陌生,我想教自己如何实现哈希表(我知道我可以使用无序的映射,但是我在挑战自己)。现在我有一个结构向量(cell),它保存了特定于个人的信息。我有一个PrintTable函数,我想用它打印出表中每个项的每个结构成员。但是,我似乎无法访问结构(单元格)的特定成员。我做错了什么

#include <iostream>
#include <string>
#include <vector>

struct cell
{
    std::string name;
    int age;
    std::string weapon;
};

class HashTable
{
private:
    std::vector<cell> *table;
    int total_elements;

    int getHash(int key)
    {
        return key % total_elements;
    }

public:
    HashTable(int n)
    {
        total_elements = n;
        table = new std::vector<cell>[total_elements];
    }

    void SearchTheTable(int hashIndex);
    void AddItem(std::string name, int age, std::string weapon);
    void RemoveItem();
    void PrintTable();
};

void HashTable::SearchTheTable(int hashIndex)
{
    int x = getHash(hashIndex);
    std::cout << x;
}

void HashTable::AddItem(std::string name, int age, std::string weapon)
{
    cell newCell = { name, age, weapon };
    table->push_back(newCell);
}

void HashTable::RemoveItem()
{

}

void HashTable::PrintTable()
{
    for (int i = 0; i < table->size; i++)
    {
        std::cout << table[i].name; // Right here I get an error that says: class "std::vector<cell, std::allocator<cell>>" has no member "name".
    }
}

int main()
{
    HashTable theTable(5);
    theTable.AddItem("Ryan", 27, "Sword");
    theTable.AddItem("Melony", 24, "Axe");
    theTable.PrintTable();
}
#包括
#包括
#包括
结构单元
{
std::字符串名;
智力年龄;
弦武器;
};
类哈希表
{
私人:
std::vector*表;
int总元素;
int getHash(int键)
{
返回键%total_元素;
}
公众:
哈希表(int n)
{
元素总数=n;
表=新标准::向量[总元素];
}
无效搜索表(int hashIndex);
void AddItem(std::string name,int age,std::string武器);
void removietem();
void PrintTable();
};
void HashTable::SearchTheTable(int hashIndex)
{
int x=getHash(hashIndex);
标准::不能推回(新电池);
}
void哈希表::removietem()
{
}
void HashTable::PrintTable()
{
对于(int i=0;isize;i++)
{

STD::如果你正在学习C++,那也是很棒的,这也是学习模板的好机会,所以这个表不是“代码> Cys< /Case>特定的。它不是必需的,也不建议你的代码< STD::vector < /代码>作为指针。你可以总是初始化一个属性,但是你喜欢使用A。它同时使用了两个代码,也变得奇怪。>std::vector
新建[]
一起。这应该是
std::vector
,您可以消除所有手动分配。值得注意的是,这种结构是不完整的:如果您分配内存,您最终必须释放它,因为您需要一个析构函数。您想要一个每个索引都有一个元素的单级哈希表,还是这是一种链式方法不止一种方法可以占用索引?两者都有各自的位置,但您似乎使用了每种方法中的一点,其中这些方法具有非常不同的内部结构。有两种策略可以起作用:当发生冲突时,您增加表的大小并重新刷新现有内容以将其展开,或者当发生冲突时,您只是将其链接起来到该位置的数组/链表。您需要选择一个。如果您只做一个级别,那么
std::vector
很好,没有指针,没有内部结构。如果发生冲突,您可以调整大小并重建表。值得注意的是,在这里选择适当的大小和大小缩放函数非常关键。当使用素数时大小最好,当使用两人一组。