我有一个看起来像这样的结构......
struct Node {
std::string key, value;
Node* link;
};
如果我初始化了一个节点数组......
Node* linkedlist = new Node[100]
如何迭代计算当前存在多少个结构?我当前正在实现一个hashmap,我需要计算有多少活动桶。
答案 0 :(得分:1)
什么是初始化为C ++的结构
使用时
Node* linkedlist = new Node[100];
数组的所有元素都是默认初始化的。通过调用key
的默认构造函数来默认初始化value
和std::string
。 link
默认初始化,即未初始化。
如何迭代计算当前存在多少个结构?
给定指针你不能这样做。这就是为什么std::vector
比动态分配的原始数组更受欢迎的原因。您可以使用std::vector
获得更多功能。
而不是
Node* linkedlist = new Node[100];
使用
std::vector<Node> linkedlist(100);
更新,以回应OP的评论
如果您不允许使用std::vector
,则必须自行跟踪阵列中的项目数。
int numItems = 100; // It could be obtained from the user input also.
Node* linkedlist = new Node[numItems];
现在,您可以依赖numItems
的值来迭代代码中其余代码的Node
数组。