2
我只是寫了這個代碼:合併兩個標準::設定的和(目前還沒有)的std ::設置::合併()
// Somewhere earlier, the equivalent of this happens.
std::set<T> a;
std::set<T> b;
FillMeUp(a);
FillMeUp(b);
// Later, in another function that sees a and b, this happens.
std::set<T> c;
std::set_union(a.begin(), a.end(),
b.begin(), b.end(),
std::inserter(c, c.begin()));
a.swap(c);
的一點是,代碼的第二位,在某些情況下,想要將a
和b
合併爲a
。 (爲了動機:我有一個帶有集合的對象數組,我遍歷該數組,如果滿足某個條件,我所看到的對象基本上覆制了我之前看到的對象,所以我想將它的集合合併到之前的集合中)
C++ 17中有一個新函數叫做std::set::merge
,但是我的g ++ 5.3.1顯然不知道它(說g ++ 5.3.1用-std調用= C++ 17)。
這個問題真的可以做得比我所做的更好嗎?
這遠非「的'一個華而不實的包裝insert'」。 –
我同意,而且比我寫的更清楚。我認爲在這個上下文中插入的唯一東西並不會做合併,而是插入將複製merge(iiuc)所做的動作,假設第二個容器的內容不再有效。 – jma
如果通過「榮耀包裝」,你的意思是「不分配記憶」,那麼肯定。 –