是否有一个标准的C++函数对象来拆分std :: pair?

Mic*_*fik 10 c++ boost tr1 std std-pair

有没有人知道是否有一个事实上的标准(即TR1或Boost)C++函数对象来访问std :: pair的元素?在过去24小时内,我曾两次希望我有类似keysPerl哈希函数的功能.例如,在std :: map对象上运行std :: transform并将所有键(或值)转储到另一个容器会很不错.我当然可以编写这样一个函数对象,但我更愿意重用那些有很多眼球的东西.

Joh*_*itb 17

boost::bind 是你要找的.

boost::bind(&std::pair::second, _1); // returns the value of a pair
Run Code Online (Sandbox Code Playgroud)

例:

typedef std::map<std::string, int> map_type;

std::vector<int> values; // will contain all values
map_type map;
std::transform(map.begin(), 
               map.end(), 
               std::back_inserter(values), 
               boost::bind(&map_type::value_type::second, _1));
Run Code Online (Sandbox Code Playgroud)