【发布时间】:2017-09-20 07:27:30
【问题描述】:
所以我正在为一个类创建一个封闭散列哈希表,并且我有一个结构
struct Example {
string key;
string data;
Example() { key = "000"; }
};
还有一个类,它包含一个指向结构向量的成员、一个构造函数和一个我将用来说明问题的函数。
class hash_table {
private:
vector<Example>* hash;
public:
hash_table(int size);
void dummy_method();
};
这意味着根据用户/文件输入动态分配向量中的结构数。
hash_table :: hash_table ( int size=10 )
{
//initialize vector
vector<Example> * hash = new vector<Example>(size);
//test objects
for(int i=0;i<size;i++)
cout<<(*hash)[i].key<<endl;
}
上面的代码似乎初始化了 10 个成员,因为它打印出“000” 十次。
但是,一旦我通过调用 dummy_method- 尝试此操作-
void hash_table::dummy_method() {
cout<<(*hash)[0].key<<endl;
}
我遇到了分段错误
我很确定这甚至不是正确的方法,但我一直在寻找/修补,但似乎找不到解决方案。但是,我绝对必须使用指向结构向量的指针,而且我很确定我也应该动态分配每个结构(不知何故)。感谢您的帮助。
(另外,是的,我们实际上必须使用命名空间,因此任何地方都没有 std)
【问题讨论】:
-
你应该存储一个向量,而不是一个指向向量的指针。这将减少错误的范围。
-
什么是
htable,它是如何定义的?请发布一个完整的示例代码来重现您所询问的问题。否则很难给出有用的答案。 -
对不起,htable 来自更大的程序。我将较大程序中的函数复制到较小的程序中以隔离问题。我对其进行了编辑以反映正确的代码。截至目前,这是一个已完成的程序,因此应隔离任何问题。
标签: c++ pointers vector hashtable