C++ 固定数量的向量大小作为类成员

Posted

技术标签:

【中文标题】C++ 固定数量的向量大小作为类成员【英文标题】:C++ fixed number of vector size as class member 【发布时间】:2013-05-26 18:50:13 【问题描述】:

我有课

class clsNode

private:
   vector<clsNode*>m_Daughters;

但是,这个向量将始终只包含 2 个 clsNode 指针。它不应该是动态向量,而应该是一个固定长度的数组,可以容纳 2 个指向 2 个 clsNodes 的指针。

我试过了

vector<clsNode*>m_Daughters[2];

但这会引发很多编译器错误。

谁能告诉我如何正确地做到这一点?

【问题讨论】:

那为什么要使用向量呢?为什么不clsNode* m_Daughters[2] @mwerschy 谢谢!你能把你的评论作为回复吗? 已经有两个很好的答案了。只接受一个。 【参考方案1】:

这个定义有问题

vector<clsNode*> m_Daughters[2];

它使m_Daughters 成为两个vector&lt;clsNode*&gt; 的数组,这与您的目的相去甚远。

 

要设置大小,可以使用它的constructor

class clsNode

   vector<clsNode*> m_Daughters;
public:
   clsNode() : m_Daughters(2)
   
;

如果大小不变,可以使用std::array

class clsNode

   array<clsNode*, 2> m_Daughters;
;

【讨论】:

【参考方案2】:

vector&lt;clsNode*&gt;m_Daughters[2]; 创建一个包含两个vector&lt;clsNode*&gt; 类型元素的数组。要更正此问题,您可以:

声明向量vector&lt;clsNode*&gt; m_Daughters;并将类的构造函数更改为clsNode() : m_Daughters(2, 0) // create a vector holding two objects of type clsNode*

根本不需要向量,直接写clsNode* m_Daughters[2];,把构造函数改成clsNode() m_Daughters[0] = m_Daughters[1] = 0;

【讨论】:

以上是关于C++ 固定数量的向量大小作为类成员的主要内容,如果未能解决你的问题,请参考以下文章

C++从类的向量指针访问类的成员

运行时在构造函数中初始化向量类成员——C++

大家好,当一个类有一个向量作为它的数据成员时,为啥它的大小总是24? [复制]

C++ 使用向量作为类实例的静态容器

使用向量作为类成员[重复]

当元素具有类成员 Boost Concurrent Queue 时无法调整向量的大小