[英]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.