Как насчет использования комбинаций разных контейнеров.
Например, когда я хотел разделить вектор на элементы, содержащиеся в дополнительной карте, и элементы, которые не были включены в дополнительную карту, я использовал следующее:
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()));
Теперь у меня есть вторая проблема - во время работы приложения можно изменить статус bool для user_info, а позже я хочу переразбить вектор на элементы, которые имеют статус bool true, а не просто содержаться в дополнительная карта.
Однако, похоже, у меня проблема с доступом ко второму элементу вложенной пары.
Я попробовал следующее, но не могу получить доступ к вложенной паре!
CActiveUsers::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);