2017-02-13 86 views
0

我想在std :: vector中創建一個對象,避免創建它,然後push_back()他。 我聽說emplace_back(),但我不能用它,在這種情況下: 在另一個向量中創建一個對象

std::vector<std::vector<std::string>> info; 

那麼,有誰知道如何創建第二個向量字符串裏面的信息和此向量在第一的最後一個位置?任何與此類似,但沒有使用INFO2和的push_back():

std::vector<std::string> info2; 
info2.emplace_back("a"); 
info.push_back(info2); 
+3

我會建議你避免這些「二維向量」,然後你的問題消失。或者保留一個'std :: map >'(如果你的內部維度不固定)或者保留一個'std :: vector '並且在它周圍放置一個座標轉換(如果你的內部維度是固定的)。那麼你就沒有不必要的對象創建,這正是你要面對的問題! –

回答

1

您可以emplace_back整體載體,這樣

info.emplace_back(std::vector<string>{"a"}); 

但是處理向量的載體是繁瑣的,所以你可能正如Lightness Races in Orbit所建議的那樣,重新考慮您的設計。

相關問題