我有以下自己创建的数据类型:
typedef map<string, vector<map<string, vector<int> > > > Entry;
这应该代表以下数据结构:
Filename | vector<map<Word, vector<LineNumber> > >
这意味着,每个 FileName 包含许多单词,每个单词包含 linNumbers。它代表多个文件的单词索引。
为此,假设我编写了一个仿函数,它应该将文件名、单词和 lnr 添加到我的数据结构中:
FileWordLineAdder(string fileName, Entry wordLnr, int lnr) : fileName(fileName), entries(wordLnr), lnr(lnr) {
}
void operator()(string word) {
word = normalize(word);
if (word.size() == 0)
return;
vector<map<string, vector<int> > >& wordLnr = entries[fileName];
/* PROBLEM START */
//vector<int>& lnrs = wordLnr[word];
//lnrs.push_back(lnr);
/* PROBLEM END*/
} // operator()
现在我可以将文件名插入到我的数据结构中(参见问题部分上面的行),但我无法访问向量中的地图。
谁能帮助我。