2017-02-13 89 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所建议的那样,重新考虑您的设计。

相关问题