【发布时间】:2009-09-22 10:25:05
【问题描述】:
要拆开一对,可以做到以下几点
boost::bind(&std::pair::second, _1); // returns the value of a pair
如果使用不同容器的组合,如何访问嵌套对?
例如,当我想将向量划分为包含在补充地图中的项目和未包含在补充地图中的项目时,我使用了以下内容:
typedef int DWORD; typedef std::pair<std::string, bool> user_info;
typedef std::map<DWORD, user_info> USER_MAP;
typedef std::vector<DWORD> VEC_STAFF;
VEC_STAFF::iterator it = std::partition(
Staff.begin(), Staff.end(),
(bind(&USER_MAP::find, m_Users, _1) != m_Users.end()));
现在我有第二个问题 - 在应用程序运行期间,user_info 的状态布尔值可能会发生变化,稍后我想用状态布尔值为 true 而不仅仅是包含在补充地图。
但是,我似乎在访问嵌套对的第二项时遇到了问题。
我尝试了以下方法,但似乎无法访问嵌套对!
VEC_STAFF::const_iterator itCurEnd = partition(Staff.begin(), Staff.end(),
bind(&USER_MAP::value_type::second::second,
bind(&USER_MAP::find, &m_Users, _1)) == true);
【问题讨论】:
标签: c++ boost std tr1 std-pair