对于两个问题相继抱歉。
我想声明一个Object的向量作为实例数据,然后在构造函数中初始化它的大小,如下所示:
class Test
{
private:
std::vector<Object_I_madeup> myVector;
int n;
public:
Test(int n):
n(n)
{
myVector(n); //Intending to set the size of the vector to n entries
}
我试图找到一个Java的.setSize(),并怀疑我应该使用resize()。我知道这是一个简单的问题 - 但最好的方法是什么?
由于
答案 0 :(得分:3)
将其添加到初始值设定项:
Test (int n):
myVector(n), n(n) {}
请注意,它应放在n
之前,因为成员按照它们在您的课程中出现的顺序进行初始化。同样,如果您的n
成员所做的一切都是跟踪向量的大小,那么您也可以使用myVector.size()
代替。对于无效值,您也应该更加严格,因为在这里,有人可以通过-5或类似的东西,你不会阻止它们。我意识到这是一个测试,但实现无符号参数会更好。正如Ed指出的那样,使用size_t
是您的最佳选择,因为它相当于向量使用的大小(std::vector<T>::size_type
)。
答案 1 :(得分:0)
使用成员初始值设定项列表,就像您对n
所做的那样。由于向量知道其大小,您甚至不需要存储n
。您可以在需要时使用myVector.size()
。
class Test
{
private:
std::vector<Object_I_madeup> myVector;
public:
Test(int n):
myVector(n) {}
};
答案 2 :(得分:0)
为什么要单独构建尺寸?矢量总能告诉你它有多少元素;存储该信息是多余的。您应该在初始化列表中初始化它:
class Test {
public:
Test(size_t size) : myVector(size) { }
private:
std::vector<Object_I_madeup> myVector;
};
请注意,通过使用int
,您可以人为地限制向量的上限。