gpt4 book ai didi

c++ - 对列表 vector 调用 clear() 会清除列表中每个索引处的所有节点吗?

转载 作者:行者123 更新时间:2023-12-03 07:11:58 33 4
gpt4 key购买 nike

我正在创建一个具有私有(private)数据成员 vector<list<pair<K, V>>> hashTable; 的哈希表.我的理解是,重新散列函数应该将原始表的元素分配给临时表,清空原始表,调整大小,将临时表的元素散列回原始表。
是否会分配 vector<list<pair<K,V>>> tempTable = origTable; 之类的任务?做一个深拷贝?或者我需要声明tempTable与原始表大小相同,然后遍历每个索引处的每个列表并将其添加到 tempTable ?
最后,将调用origTable.clear();在每个索引处清空每个列表中的所有节点并正确回收内存,还是我需要逐步遍历每个索引并显式清空每个列表?
谢谢

最佳答案

C++ 中类型的约定是具有复制语义,std::vector , std::liststd::pair都坚持这一点。
因此vector<list<pair<K,V>>> tempTable = origTable;做一个“深拷贝”,并且不保留对旧数据的引用。同样调用 .clear()在这样的 vector 上会破坏所有使用的内存。

关于c++ - 对列表 vector 调用 clear() 会清除列表中每个索引处的所有节点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64686786/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com