C++ 函数对象返回 `p->first` 和 `p->second`

标签 c++ boost stl

有没有返回p->firstp->second的内置函数对象,让我可以愉快的写

transform(m.begin(),m.end(),back_inserter(keys),get_first);
transform(m.begin(),m.end(),back_inserter(vals),get_second);

基于 STL 的解决方案是最好的,boost 解决方案次之。

是的,我知道 boost::lambda,我不想开始使用它。

最佳答案

g++ 有非标准扩展和 SGI称为 select1stselect2nd。因此,STL 中可能没有任何内容。

Boost的bind也可以做到这一点,给它一个指向正确成员函数的指针

boost::bind(&std::map<string,string>::value_type::second,_1)

关于C++ 函数对象返回 `p->first` 和 `p->second`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218017/

相关文章:

c++ - Windows 7中的 boost 问题

c++ - 重载用户定义类型的全局交换

c++ - 为列表迭代器的映射定义 < 运算符

c++ - astyle 没有缩进以 .或 ->

c++ - C++库或CouchDB的包装器

sockets - boost asio SO_REUSEPORT

c++ - string::replace 在有效迭代器上抛出 std::out_of_range

c++ - 使用可变参数列表与 vector 的原因 (c++)

c++ - 如果使用 'new' 来实例化对象而不将其分配给变量,会发生什么情况?

c++ - 如何在 C 中找到可执行文件的位置?