0

抱歉连续问了两个问题。

我想将 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
        }

我试图找到一个 .setSize() 一个 la Java,并且怀疑我应该使用 resize()。我知道这是一个简单的问题——但最好的方法是什么?

谢谢

4

3 回答 3

3

将其添加到您的初始化程序中:

Test (int n):
    myVector(n), n(n) {}

请注意,它应该放在前面,n因为成员按照它们在您的类中出现的顺序进行初始化。同样,如果您的n成员所做的只是跟踪向量的大小,那么您最好只使用它myVector.size()。您还应该对无效值更加严格,因为在这里,有人可以通过 -5 或类似的东西,而您不会阻止他们。我意识到这是一个测试,但意识到无符号参数会更好。正如 Ed 指出的那样,使用size_t是你最好的选择,因为这相当于向量使用它的大小 ( std::vector<T>::size_type)。

于 2012-08-30T19:59:10.123 回答
0

使用成员初始化器列表,就像您为n. 由于向量知道它的大小,你甚至不需要存储n. 您可以myVector.size()在需要时使用。

class Test
{
private:
    std::vector<Object_I_madeup> myVector;
public:
     Test(int n):
       myVector(n) {}
};
于 2012-08-30T19:59:22.713 回答
0

为什么要单独构建尺寸?向量总能告诉你它有多少个元素;存储该信息是多余的。你应该在初始化列表中初始化它:

class Test {
public:
    Test(size_t size) : myVector(size) { }
private:
    std::vector<Object_I_madeup> myVector;
};

请注意,通过使用int,您人为地限制了向量的上限。

于 2012-08-30T19:59:40.770 回答