Какая лучшая альтернатива BOOST_FOREACH, если вы хотите перебрать std :: set?
Когда я пытаюсь сделать то, что кажется разумным методом перебора набора, я получаю ошибки компиляции.Этот код:
set<string> nameSet;
string aName;
BOOST_FOREACH(nameSet, aName) {
cout << aName << endl;
}
генерирует эту ошибку компиляции с помощью gcc 4.4.3:
error: no match for ‘operator=’ in ‘nameSet = boost::foreach_detail_::deref [with T = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, C = mpl_::bool_<false>](((const boost::foreach_detail_::auto_any_base&)((const boost::foreach_detail_::auto_any_base*)_foreach_cur70)), 0u)’
Согласно эта ссылка они несовместимы, потому что std:: set :: iterator должен разрешить изменение значения, на которое он ссылается.
Я могу подумать о нескольких методах с любыми способами, но мне интересно, есть ли более чистый способ перебора множества.