如何构造具有构造函数参数的对象向量?

Ato*_*mix 1 c++ vector

我想做的事情如下:

class Circle {
    int radius;
    public:
        Circle( int r ) : radius(r) {}     
}

vector<Circle> circlesVector;

for (int i = 0; i < 10; i++) {
    Circle circle(i);
    circlesVector.push_back(circle);
}
Run Code Online (Sandbox Code Playgroud)

但这似乎并不像我想要的那样有效.向量尝试使用Circle(Circle&)的构造函数或我不理解或期望的某些行为创建Circle对象.

jua*_*nza 9

您发布的代码基本上是正常的,禁止一些拼写错误和遗漏包含.你可以看到这个工作演示.

但是您不需要创建临时Circle对象.你可以这样做:

for (int i = 0; i < 10; i++) {
    circlesVector.push_back(i);
}
Run Code Online (Sandbox Code Playgroud)

因为Circle是隐式构造的int.请注意,您还可以使用初始化列表:

vector<Circle> circlesVector{0,1,2,3,4,5,6,7,8,9};
Run Code Online (Sandbox Code Playgroud)

或者,使用emplace_back:

circlesVector.emplace_back(i);
Run Code Online (Sandbox Code Playgroud)