gpt4 book ai didi

c++ - 在 C++ 中实现类似 map 的迭代器时出现问题

转载 作者:行者123 更新时间:2023-11-30 02:10:54 26 4
gpt4 key购买 nike

我刚刚用 C++ 实现了一个通用的跳跃列表,我想给它带来一个STL map-like 迭代器。重载“->”运算符时出现问题:需要返回对 iterator::value_type 的引用,在我的例子中是 std::pair,K 是键类型,V 是我的映射的值类型-样的容器。代码如下:

value_type& operator->() { return value_type(inner->key, inner->value); }

编译器返回一些关于引用临时对象的讨厌消息,我完全同意他的看法;我的问题是:我到底应该怎么做才能返回引用成对,而不必将成对成员放入我的迭代器类中?

最佳答案

一方面,operator->应该返回一个指针,或者有自己的 operator->() 的东西方法。但是如果你没有 value_type , 即 pair<const K,V>存储,您不能轻易返回指向它的指针。

你能改变inner的定义吗?所以它是或包含 pair ?您可以添加像 key() 这样的访问器和 value()在避免混淆 firstsecond在大多数地方。

或者,取决于喜欢的程度std::map你需要这个来行动,也许你应该使用不同的 value_type描述您实际拥有的内容的 typedef。

关于c++ - 在 C++ 中实现类似 map 的迭代器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4198022/

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