【发布时间】:2018-04-15 20:05:28
【问题描述】:
我在使用 vector 作为私有数据成员时遇到了很多麻烦。我不确定如何为 10 个元素保留空间,我尝试了调整大小的组合,还尝试在类的构造函数中调用向量构造函数,但我不断从向量构造函数中收到编译错误。我想用 10 个元素初始化向量,因为我试图用我的二叉树中的值填充向量。
class bst
{
public:
// constructor: initializes an empty tree
bst()
{
root = nullptr;
totalNodes = 0;
treeHeight = -1; // empty tree with no nodes has a height of -1
myVector->reserve(10);
}
private:
bst_node * root;
int totalNodes;
std::vector<T> *myVector;
int treeHeight; // height of the tree to be used later for some functions
}; // end class bst
void _to_vector(bst_node *r, std::vector<T> *vec)
{
if (r == nullptr) {
return;
}
_to_vector(r->left, vec);
vec->push_back(r->val);
_to_vector(r->right, vec);
}
【问题讨论】:
-
你没有向量,你有一个指针。
-
std::vector<T> *myVector非常不太可能是个好主意。哪本书教你的? -
由于myVector是一个vector
*,你可以在构造函数的初始化列表中使用myVector(new vector (10))来初始化10个元素。然而,正如其他人所提到的,为什么不把它变成一个向量 ? -
不要对这里的否决票挑剔,我也不是为不好的问题辩护的人,但是:这不是一个愚蠢的问题。这显然是一个 C++ 初学者寻求帮助,他们说出了他们试图做什么,解释了他们遇到的问题,没有要求解决家庭作业问题,并展示了他们的代码。在你抱怨“他们应该在问之前做更多的研究”之前,两个词:“指针。初学者。”当然,如果有更多的经验,这可能会很明显,但这正是我的观点。赞成这个问题只是为了抵消反对票。
-
@frasnian 这可能不是一个愚蠢的问题,但它远非好,并且不太可能引出好的答案或对当前形式的任何人有用。 minimal reproducible example 将是一个很好的起点。另外,How to Ask。令人难以置信的是它有 3 票赞成。
标签: c++ vector constructor