我正在创造一种非常粗糙的hashtable
。它将读取ASCII文本文件并将所有单词存储到链表的表中以及找到单词的行号。它使用单词的第一个字母的数值来查找存储单词的列表,然后在列表中搜索单词的任何条目,如果没有找到它会向列表添加新条目,否则它会添加行号到匹配的条目。
我根本不知道如何初始化vector
。它需要128个列表(每个ASCII值一个)。
另请注意,我无法使用std::map
我知道有一个整数向量,你可以vector<int> vector_name(128,0)
得到128个条目全部有值0.我基本上想要这样做,但有128个entry
的空列表。
这是我到目前为止的代码
#include <iostream>
#include <vector>
#include <cstdlib>
#include <string>
#include <list>
#include <algorithm>
using namespace std;
class index_table {
public:
void insert(string key, int value);
vector<int>& find(string key);
private:
class entry{
public:
string word;
list<int> line_numbers;
};
vector<list<entry> > table;
};
int main(){
return 0;
}
答案 0 :(得分:0)
在您还没有的构造函数中:table.resize(128);
现在table
是一个包含128个空std::list
个entry
个对象的向量。 / p>
即
class index_table {
public:
void insert(string key, int value);
vector<int>& find(string key);
//My ctor
index_table(size_t len) : table(len), len(len)
{
//some other stuff someday
}
private:
//not sure why you want to make entry private but ok...
class entry{
public:
string word;
list<int> line_numbers;
};
//some typename convenience for your iterators
typedef entrylist list<entry>;
typedef entrytable vector<entrylist>;
entrytable table;
};