gpt4 book ai didi

c++ - 访问 vector 中的 map : map>>>

转载 作者:行者123 更新时间:2023-11-30 02:00:08 28 4
gpt4 key购买 nike

我有以下自己创建的数据类型:

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()

现在我可以将文件名插入到我的数据结构中(参见问题部分上方的行),但我无法访问 vector 中的 map 。

谁能帮帮我

最佳答案

我认为您过度设计了数据结构。对于“文件 -> 单词 -> 行号”的索引,一个简单的:

Filename | map<Word, vector<LineNumber> >

map<string/*filename*/, map<string/*word*/, vector<unsigned long/*lineNumber*/ > > >

可能就足够了。请注意,这个数据结构已经是整个索引。它不是“条目”,因此您的 typedef 可能命名错误。

(请注意,我删除了 map 上方的一层“vector ” - 我认为这是您问题的实际来源。使用 vector<map<...>> 您将有很多文件名的字图,并且您d 可能不知道选择哪一张 map 。)

关于c++ - 访问 vector 中的 map : map<string, vector<map<string, vector<int>>>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15459409/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com