如何将地图<字符串,整数>复制到矢量<整数,字符串>



我的代码以相同的顺序复制地图

map <string,>To vector <string,>

我想要这个

map <string,>To vector <int,>

有可能复制性病吗?

#include <iostream>
#include <vector>
#include <map>
#include <iterator>
#include <fstream>
using namespace std;
int main(){

fstream fs; 
fs.open("test_text.txt"); 
if(!fs.is_open()){
cout << "could not open file" << endl; 
}
map <string, int> mp; 
string word; 
while(fs >> word){
for(int i = 0; i < word.length(); i++){
if(ispunct(word[i])){
word.erase(i--, 1);
}
}
if(mp.find(word) != mp.end()){
mp[word]++; 
}
}
vector <pair <string, int> > v(mp.size()); 
copy(mp.begin(), mp.end(), v.begin()); 



return 0; 
}

有很多不同的方法,但这是可行的

vector<pair<int, string>> v;
v.reserve(mp.size());
for (const auto& p : mp)
v.emplace_back(p.second, p.first);

似乎不可能与std::copy,因为你的值类型是不同的,源不能转换为目标。使用std::transform应该是可能的。

相关内容

  • 没有找到相关文章

最新更新