我有一組共享指針:移除*
std::set<boost::shared_ptr<T>> set;
和指針:
T* p;
我想有效刪除set
的元素等於p
,但是我不能對集合的任何成員或任何標準算法執行此操作,因爲T*
是與boost::shared_ptr<T>
完全不同的類型。
我能想到的一些方法是:
- 莫名其妙地構建從不會採取有針對性的所有權內存(理想的解決方案指針一個新的shared_ptr,但我不能看到如何做到這一點)
- 包裝/重新實施的shared_ptr,這樣我可以做到上面
- 只是在做我自己的二進制搜索超過設定
爲什麼你有這個原始的T指針呢? – dalle 2010-03-28 11:35:00
爲什麼不呢?我常常在'Factory'類中找到自己的智能指針,並且只有外部的原始指針/引用。外部不需要知道我如何管理我的對象。 – 2010-03-28 14:02:30