押し付けがましいコンテナー splay_set の作業中に、ローカル イテレーター メンバー変数をリセットする必要があります。以下のサンプルコードを参照してください -
#include <boost/intrusive/splay_set.hpp>
using namespace boost::intrusive;
class Obj
{
public:
Obj(){};
~Obj(){};
boost::intrusive::list_member_hook<boost::intrusive::link_mode<boost::intrusive::normal_link> > m_memberHook;
private:
int a;
};
typedef splay_set<Obj, compare<greater<Obj> >, member_hook<Obj,
splay_set_member_hook<boost::intrusive::link_mode<boost::intrusive::normal_link> >,
&Obj::m_memberHook> > StorageSSet;
typedef StorageSSet::iterator StorageSSetIter;
class Storage
{
public:
bool init(StorageSSet& sset)
{
// Error: "no match for operator= in ..."
m_curIter = sset.begin(); ////<<<<------------- How to set new iterator
m_endIter = sset.end(); ////<<<<------------- How to set new iterator
}
protected:
StorageSSetIter m_curIter;
StorageSSetIter m_endIter;
};
侵入型コンテナは割り当てをサポートしていないと思います。splay_set
また、メンバー初期化子リストを介してイテレータを初期化することもできません。ブーストや他のサイトには非常に限られた例があります。この質問に対する明確な答えはありません。
私の質問は、新しい値を splay_set イテレータに割り当てるにはどうすればよいかということです (一般的には、侵入型のコンテナに)。