[英]How to insert multiple value in vector in C++?
我想知道有沒有辦法可以在不使用臨時變量的情況下將矢量中的多個值作為單個值插入?
我的意思是例如:
struct Something{
int x;
int y;
};
int main()
{
vector <Something> v;
int x, y;
cin >> x >> y;
v.push_back(x, y);
}
有沒有辦法我們避免這樣做(定義另一個變量,然后插入,而不是直接插入x, y
):
Something temp;
temp.x = x;
temp.y = y;
v.push_back(temp);
給你的類一個構造函數,如下所示:
Something(int x_, int y_) :x(x_), y(y_) {}
然后你可以這樣做:
v.push_back(Something(x,y));
在C ++ 11中,您可以在沒有構造函數的情況下執行此操作:
v.push_back({x,y});
在C ++ 11中,您可以使用安置功能:
if (std::cin >> x >> y)
{
v.emplace_back(x, y);
}
else { /* error */ }
這假設你的Something
類有一個(int, int)
構造函數。 否則你可以使用帶有大括號初始化程序的push_back
,就像Benjamin的回答一樣。 (兩個版本在運行聰明的編譯器時可能會生成相同的代碼,您可能希望將類保留為聚合。)
在C ++ 11中,您可以這樣做:
v.push_back({1,2});
您不需要像其他答案所建議的那樣編寫構造函數。
除非您已手動下載並更新到Beta版本,否則這在C ++ 11 Visual Studio 2012中不起作用。 目前它不是最終版本,但從現在開始幾個月它可能會使用自動更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.