C++ 如何在std::list<;上构建迭代器;std::pair<;键类型、值类型>&燃气轮机;这将解决std::pair<;常量键类型、值类型>;?

C++ 如何在std::list<;上构建迭代器;std::pair<;键类型、值类型>&燃气轮机;这将解决std::pair<;常量键类型、值类型>;?,c++,list,stl,iterator,C++,List,Stl,Iterator,我正在编写哈希映射的自定义实现(类似于std::unordered_map),其中一个步骤如下: 有一个std::list的对,其中包含存储在哈希表中的所有对象。我需要构建一个遍历列表的迭代器,hovewer,它不能处理std::pair,而是std::pair(这样用户就不能更改密钥),所以我不能使用内置的列表迭代器 那么如何做到这一点呢 谢谢你在std::list::iterator上写一个包装器,或者在列表中实际存储std::pair。@HolyBlackCat包装器可能不会有帮助。在一天

我正在编写哈希映射的自定义实现(类似于
std::unordered_map
),其中一个步骤如下:

有一个
std::list
对,其中包含存储在哈希表中的所有对象。我需要构建一个遍历列表的迭代器,hovewer,它不能处理
std::pair
,而是
std::pair
(这样用户就不能更改密钥),所以我不能使用内置的列表迭代器

那么如何做到这一点呢


谢谢你

std::list::iterator
上写一个包装器,或者在列表中实际存储
std::pair
。@HolyBlackCat包装器可能不会有帮助。在一天结束时,
*it
对于迭代器
it
over
std::pair
必须返回对
std::pair
的引用,但是没有这种类型的对象可供引用。好吧,我想它可以返回一个代理对象a la
std::vector
,然后放弃满足容器要求。@HolyBlackCat不幸的是,在列表中存储
std::pair
,并不是一个解决方案,因为在列表的实现中有两个函数复制元素,所以程序首先崩溃,
std::pair
是可复制的(假设
KeyType
ValueType
是可复制的)。其次,
std::list
不应要求
T
可复制。具体来说,
list
的哪些功能有哪些问题?也许你应该集中精力解决这个问题。
错误:出现了删除的函数'std::pair&std::pair::operator=(const std::pair&')
。这是因为列表中有
\u M\u assign\u dispatch
函数。