【发布时间】:2015-10-11 13:32:03
【问题描述】:
我正在编写一个 C++ 程序,逐行读取一个大文件,并将每个行信息(经过一些处理)插入到 unordered_map。
这是 unordered_map 的声明:
unordered_map<int, unordered_map<int, int> > entries;
我插入的是(这是在我处理文本文件的每一行的循环代码块中):
unordered_map<int, int> tmp;
tmp[y] = z;
entries[x] = tmp;
但事实证明,这在性能方面表现不佳。
我尝试创建一个pair<int, pair<int, int>> 并使用entries.insert(the_pair) 插入它,但我无法编译它(获取:no matching member function for call to 'insert')。
编辑:
程序看起来像这样:
ifstream ifile(path-to-file);
string line;
unordered_map<int, unordered_map<int, int> > entries;
while (getline(ifile, line)) {
// some processing with line to find (int) x and (int) y
if (entries.find(x) == entries.end()) {
auto iter_and_success = entries.emplace(x, unordered_map<int, int>{});
auto &tmp_m = iter_and_success.first->second;
tmp_m[y] = 1;
}
else {
unordered_map<int, int> r = entries[x];
if (r.count(y) == 0)
entries[x][y] = (int) r.size() + 1;
}
}
【问题讨论】:
标签: c++ performance insert unordered-map