我剛剛問了一個涉及std::set
的問題,但考慮一下後,我想我已經將我的問題縮小到了一個簡單的問題。確定設置項目
我有一組獨特的物品。我想創建一個矢量,矢量中的每個元素指向集合中的一個項目。
所以,我有一組(唯一)甲對象:
class A
{
int i;
};
std::set<A, compareclass> mySet;
和A的矢量*:
std::vector<A*> myVec;
set::insert()
返回一對包括一個迭代器元件(插入或已經存在)。我可以在技術上得到它的地址,像這樣:
ret = myset.insert(A());
myVec.push_back(&(*ret.first));
我想這也許不是個好主意,但。有沒有其他方法可以讓矢量元素指向集合中的特定對象?
只有在刪除指向它的項時,迭代器纔會失效。因此,爲什麼不只是存儲迭代器呢?但是爲什麼你需要一組指針/迭代器/無論怎樣進入一個集合呢?這並不是說沒有可能用於這樣的事情,只是想知道。 –
你可能想看看Intrusive Containers,就像Boost:http://www.boost.org/doc/libs/1_52_0/doc/html/intrusive.html - 這些讓你有你的蛋糕和吃鬆餅 – sehe
@JerryCoffin我的一部分混亂不知道迭代器是否會失效或者如果我添加/刪除了其他設置項或者它在程序持續時間內是否會保持良好狀態,則會發生更改。 – user974967