您收到错误的原因map<string, string>::value_type::second
是不是成员函数。它只是 std::pair 模板结构的成员变量。
一种不使用仿函数的可能解决方案是使用 lambda。但这是一个 C++11 特性,所以我不知道这是否是你想要的。
看看下面的例子
#include <iostream>
#include <map>
#include <deque>
#include <algorithm>
#include <string>
#include <iterator>
using namespace std;
int main()
{
map<string,string> myMap;
deque<string> myDeque;
myMap["key1"]="value1";
myMap["key2"]="value2";
transform(myMap.begin(),myMap.end(),back_inserter(myDeque),[](map<string,string>::value_type p){return p.second;});
copy(myDeque.begin(),myDeque.end(),ostream_iterator<string>(cout,"\n"));
}