我正在尝试将 map 复制到 vector 对中,因此可以按 vector 对中second
数据成员对 vector 进行排序。我已经这样解决了:
void mappedWordsListSorter(){
for (auto itr = mappedWordsList.begin(); itr != mappedWordsList.end(); ++itr){
vectorWordsList.push_back(*itr);
}
sort(vectorWordsList.begin(), vectorWordsList.end(), [=](pair<string, int>& a, pair<string, int>& b){return a.second > b.second;});
}
我需要找到一种方法,而不使用原始循环,而使用标准库。我遇到了很多仅通过传递键或映射值来执行此操作的示例。我需要复制到
pairs<string, int>
的 vector 中。最好的方法是什么? 最佳答案
只需使用std::vector
的 assign
成员函数。
//no need to call reserve, bidirectional iterators or better will compute the size and reserve internally.
vectorWordsList.assign(mappedWordsList.begin(), mappedWordsList.end());
如果您不希望覆盖 vector 中的现有值,请改用
insert
vectorWordsList.reserve(vectorWordsList.size() + mappedWordsList.size()); // make sure we only have a single memory allocation
vectorWordsList.insert(vectorWordsList.end(), mappedWordsList.begin(), mappedWordsList.end());