gpt4 book ai didi

c++ - 实现通用 map [来自 HW]

转载 作者:行者123 更新时间:2023-11-28 07:11:14 25 4
gpt4 key购买 nike

作为我的 C++ 硬件的一部分,我必须实现一个通用的 Map 容器。

我应该实现的映射应该有一个迭代器和一个常量迭代器。我决定将数据存储在 map 中的一个节点内 [就像在链表中一样]。

我得到了 map_example.cpp,我的任务是编写 map.h 以便 map_example 可以编译。

我的问题是关于 map_example.cpp 中的以下代码行

Map<std::string,int> msi;
msi.insert("Alice",5);
msi.insert("Bob",8);
msi.insert("Charlie",0);

// print map
for(Map<std::string,int>::const_iterator it = msi.begin(); it != msi.end(); ++it)
{
std::cout << *it << std::endl;
/*
* prints:
* Alice:5
* Bob:11
* Charlie:0
*/
}

从这段代码中,我了解到我必须重载“*”运算符,但我不确定要返回什么才能启用此循环来打印 map 内容。

我的一个想法是实现类似的东西:1. 迭代器::getKey()2. 迭代器::获取数据()3. 运算符“*”将返回一个字符串,但我不确定如何从通用数据创建一个字符串。

实现支持此类功能的 map 的最佳方式是什么?

最佳答案

只需做类似于 std::map<K, V> 的事情即可返回std::pair<K const, V>&std::pair<K const, V> const&取决于是否iteratorconst_iterator用来。然而,std::pair<T0, T1>没有输出运算符,而您需要返回的类型应该定义了输出迭代器。

关于c++ - 实现通用 map [来自 HW],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20942860/

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