-1

我正在创造一种非常粗糙的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;
}
4

1 回答 1

0

在您还没有的构造函数中,您可以这样做:table.resize(128);nowtable是一个包含 128 个空对象std::list的向量。entry

IE

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;
};
于 2013-10-11T21:37:40.900 回答