复制C++中hashMap的构造
Copy Construction For hashMap in C++
在最近的任务中,我们被要求在C++中实现一个哈希映射,而不使用STL中提供的技术。
我正在堆栈其中一个函数——复制构造函数。在谷歌上搜索后,我发现了一个有效的解决方案:
在C++中为哈希映射编写有效的副本构造函数
但我不能完全理解。有人能帮忙解释一下吗?
1.为什么我们需要使用指向指针Node** p = &hashTable[i];
的指针
2.while循环中的逻辑是什么
3.特别是,这个代码p=&c->next;
是什么意思?
首先,有许多不同类型的哈希表实现,因此您在网上找到的任何特定的哈希表都可能会也可能不会深入了解您需要为自己的实现做什么。也就是说。。。
-
p
最初指向bucket的head元素,即[this->
]hashTable[i]
处的Node*
。它最初用于将其设置为NULL
。当您处理Node*
时,Node**
是跟踪其位置的自然方法。 -
CCD_ 10循环的每次迭代复制CCD_ 13中的桶CCD_ 12中的下一个CCD_;在
c
在新存储器中创建副本并且*p
(其跟踪正在为正在构建的*this
对象创建的链表位置)被更新以指向该位置。 -
p=&c->next;
意味着p
被设置为新创建的Node
的next
成员(地址为c
):该next
指针必须由Node(const Node&)
构造函数初始化为nullptr
/NULL
/0
,否则创建的链表将无法正确终止。只有当冲突元素的链表中有更多的元素要复制时,下一次迭代才会用c
的下一个值覆盖*p
,从而覆盖先前添加的Node
的next
成员。
总之,您看到的是一个复制amountOfBuckets
链表的循环。如果您不熟悉链表操作,最好先编写一个链表类并使其发挥作用,然后使用它来帮助实现哈希表。
- 正在寻找C++不可变的hashset/hashmap
- 如何将 int 放入 HashMap jni?
- 在使用 JNI 将 c++ unordered_map转换为 java hashMap之前将其转换为 java hash
- 通过hashmap c 迭代
- Performance of C++ std::unordered_map vs Kotlin/Java HashMap
- C++Arduino:从hashmap添加和获取值会返回垃圾值
- 如何修复"Hashmap error: " C++错误
- 如何将 cocos2d ValueMap 作为 HashMap 发送到 Java
- 在C 中的自定义类的hashmap中的默认值
- 对类的模板(例如HashSet+HashMap)的签名进行条件检查
- 如何使用C++中的Hashmap在任意随机数组中找到所有求和为特定值的对
- DHCP指纹的HashMap实现
- tbb并发hashmap实现字典ADT
- 如何在C++中实现 HashMap 时使用 std::function
- C++中已经有为 LinkedList、HashMap、Tree 等编写的类
- 在hashmap中搜索,其中键可以是单个字符串或空格分隔的字符串
- C++将 HashMap<string、布尔>对象返回到 Java
- 复制C++中hashMap的构造
- 我正在尝试制作一个字符串函数的hashmap
- 向量到字符串和C++中的HashMap