什么是初始化为C ++的结构体

时间:2015-11-19 21:00:19

标签: c++ struct hashmap

我有一个看起来像这样的结构......

struct Node {
     std::string key, value;
     Node* link;
};

如果我初始化了一个节点数组......

Node* linkedlist = new Node[100]

如何迭代计算当前存在多少个结构?我当前正在实现一个hashmap,我需要计算有多少活动桶。

1 个答案:

答案 0 :(得分:1)

  

什么是初始化为C ++的结构

使用时

Node* linkedlist = new Node[100];

数组的所有元素都是默认初始化的。通过调用key的默认构造函数来默认初始化valuestd::stringlink默认初始化,即未初始化。

  

如何迭代计算当前存在多少个结构?

给定指针你不能这样做。这就是为什么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数组。