如何返回std :: pair的内容?

use*_*123 1 c++ return return-value

我试图返回std::pair其中包含的内容intstring值.我应该保留什么功能返回类型?

我尝试了两种intchar返回类型,但两者都给出了错误.我在下面给出了错误:

#include<iostream>
#include<algorithm>
#include<map>
#include<vector>

    std::pair<int,std::string>client()  
{

std::vector<std::string> most { "lion","tiger","kangaroo",
                                 "donkey","lion","tiger",
                                 "lion","donkey","tiger"
                                 };
std::map<std::string, int> src;
for(auto x:most)
    ++src[x];

std::multimap<int,std::string,std::greater<int> > dst;

std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()), 
                   [] (const std::pair<std::string,int> &p) {
                   return std::pair<int,std::string>(p.second, p.first);
                   }
                 );

std::multimap<int,std::string>::iterator it = dst.begin();

 for(int count = 0;count<3 && it !=dst.end();++it,++count)
   std::cout<<it->second<<":"<<it->first<<std::endl;

 return *it;  
}

int main()
{
std::multimap<int,std::string>::const_iterator rec;
rec= client();  // Error  no match for ‘operator=’ in ‘rec = client()()’
std::multimap<int,std::string>::iterator it = rec.begin();  //error: ‘std::multimap<int, std::basic_string<char> >::const_iterator’ has no member named ‘begin’

 for(int count = 0;count<3 && rec !=it.end();++it,++count) // error: has no member named 'end' 
   std::cout<<rec->second<<":"<<rec->first<<std::endl;

}
Run Code Online (Sandbox Code Playgroud)

P0W*_*P0W 7

只需返回一对int&std::string本身multimap作为其元素的包含

std::pair<int,std::string> client(){
//...  
}
Run Code Online (Sandbox Code Playgroud)