2017-02-28 452 views
0

在我的代碼中,我有一個std::unordered_set,我需要將數據移動到std::vector。我在使用std::unordered_set的同時獲取數據,以確保在轉換爲std::vector之前只存儲唯一值。我的問題是如何最有效地將內容移動到std::vector?數據移動後我不需要std::unordered_set。目前,我有以下幾點:高效地將std :: unordered_set的內容移動到std :: vector

std::copy(set.begin(), set.end(), std::back_inserter(vector)); 
+3

當然'std :: vector :: reserve'會有幫助(如果你沒有這樣做)。 – LogicStuff

+0

究竟是什麼數據? – Yakk

+0

它是數字值。 'std :: vector ' – nalyd88

回答

3

C++ 17之前,你能做的最好的是:

vector.insert(vector.end(), set.begin(), set.end()); 

set的元素是const,所以你不能從他們身上動 - 移動只是複製。


C++ 17後,我們得到了extract()

vector.reserve(set.size()); 
for (auto it = set.begin(); it != set.end();) { 
    vector.push_back(std::move(set.extract(it++).value())); 
} 

雖然給出您的意見,您的數據是double S,這不會有問題。

相關問題