std :: setを反復処理するときにBOOST_FOREACHに最適な代替手段は何ですか?std :: setでBOOST_FOREACHの代わりに?
私が試して、セットを反復するための合理的な方法であると思われるものをコンパイルエラーにします。このコード:
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 ::セット::イテレータは、値の変異を可能にしなければならないので、this linkによると2は互換性がありませんそれは参照してください。
私はいくつかのハムフィストメソッドを考えることができますが、より洗練された方法でセットを反復するかどうか疑問に思っています。
不完全なプログラムの断片を除いて、妥当な質問に対して+1を与えていたでしょうか。あなたの質問には、完全で最小限のプログラムを投稿してください。そうでなければ、コードを書く必要があります。 http://sscce.org/を参照してください。 –