我想做的事情如下:
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对象.
您发布的代码基本上是正常的,禁止一些拼写错误和遗漏包含.你可以看到这个工作演示.
但是您不需要创建临时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)
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |