如何初始化对象列表的向量。让我感到困惑

时间:2013-10-11 21:19:49

标签: c++ list vector

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

1 个答案:

答案 0 :(得分:0)

在您还没有的构造函数中:table.resize(128);现在table是一个包含128个空std::listentry个对象的向量。 / 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;
};