我想做类似的事情:

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);
}

但这似乎并没有达到我想要的方式。该 vector 尝试使用Circle(Circle&)的构造函数或一些我不理解或期望的行为来创建Circle对象。

最佳答案

您发布的代码从根本上来说还不错,除了一些错别字和缺失的代码。您可以看到this working demo

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

for (int i = 0; i < 10; i++) {
    circlesVector.push_back(i);
}

因为Circle可从int隐式构造。
请注意,您还可以使用初始化列表:
vector<Circle> circlesVector{0,1,2,3,4,5,6,7,8,9};

或者,使用emplace_back:
circlesVector.emplace_back(i);

关于c++ - 如何构造具有构造函数参数的对象的 vector ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21393484/

10-11 22:54
查看更多