如何在c++中添加迭代的结果到新的multimap ?



如何将结果插入到新的multimap中??我试图搜索字典容器找到由用户给出的关键字,我需要迭代tempCollector找到不同的元素。但是,我似乎找不到一种方法来存储结果在tempCollector.

//current container with all the data
multimap<string, DictionaryItem> dictionaryContainer;
void search(vector<string> input) {
if (dictionaryContainer.empty()) {
cout << "it's empty";
}
int inputSize = input.size();
string tempKeyword = input[0];
//need to copy or insert the value and keys to the tempCollector
multimap<string, DictionaryItem>tempCollector;       
//iteration to find keyword; want to store the result in tempCollector
auto its = dictionaryContainer.equal_range(tempKeyword);
for (multimap<string, DictionaryItem>::iterator itr =its.first; itr != its.second; itr++) {
itr->second.print();          
}
};

如果要复制整个its范围:

tempCollector.insert(its.first, its.second);

如果你想复制每个元素:

for (auto itr =its.first; itr != its.second; itr++) {
if (condition) {
tempCollector.emplace(tempKeyword, itr->second);
//or
tempCollector.insert(*itr);
//or
tempCollector.emplace(tempKeyWord, DictionaryItem(...));
}
}

请记住(multi)map将键/值对处理为std::pair<Key,T>(也称为value_type)。
multimap::insert方法假定您已经构造了要插入的对,而multimap::emplace将为您构建它们。

最新更新