目前我試圖從一組中刪除一系列迭代器,但是GCC的標準庫似乎被破壞,因爲std :: set :: erase(iterator)應該返回一個迭代器(下一個迭代器),但是在GCC中它返回void(這是標準?)當使用它作爲參數時,增加一個迭代器是否安全?
反正我想寫:
myIter = mySet.erase(myIter);
但是GCC不喜歡它... ... 因此它是安全的,而不是寫這個?
mySet.erase(myIter++);
謝謝!
編輯:是的,我正在檢查mySet.end();
你說的只是因爲操作符++已被類重新定義。對於POD,操作員實際上是在線後呼叫的! – PierreBdR 2008-10-02 08:05:50
是的,這是一個有趣的評論。關鍵在於操作順序與POD類型無關,因爲增量總是定義明確的。 那麼你總是可以想象奇怪的情況下,方法有一些訪問POD變量的引用,但這不被推薦。 – Camille 2008-10-02 08:32:47