假设我创建了一个类
class Foo
{
public:
Foo(int numofCars, int someValue);
private:
vector<Car> carList;
}
Foo::Foo(int numofCars, int someValue)
{
carList.resize(numofCars);
}
我的理解是,在调整向量之后(carList
为空vector
)将通过调用默认构造函数成为Car
对象的列表。
我可以指定被调用的Car
对象的构造函数吗?例如,我想调用Car()
?
Car(int Value)
答案 0 :(得分:1)
是的,你可以。 (live example)
carList.resize(numofCars, Cars(42));
如果您不愿意制作不必要的副本,则代码有点复杂。
carList.reserve(numofCars);
for (int i = 0; i < numofCars; i++)
carList.emplace_back(42);
它可能更好,但它不始终有效 - 如果“1创建+10复制”的成本低于“10创建”的成本。这将是个案。