我有一个对象:
class Object {
public:
boost::shared_ptr<QString> const& name() const {reutrn _name;}
private:
boost::shared_ptr<QString> _name;
};
还有一个 multi_index 集
typedef
boost::multi_index_container<
Object,
boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<
boost::multi_index::const_mem_fun<
Object,
boost::shared_ptr<QString> const&,
& Object::name>,
StringPointerLess> > >
ObjectSet;
现在,如果我想在集合中找到一些东西,QString
我需要复制它以在堆中分配并创建shared_ptr
。
是否可以避免这种不必要的复制操作,保持原样?