以下代码不起作用:
template<typename T>
struct Hashf {
size_t operator()(T* ptr) const {
return (size_t)*ptr;
}
};
template<typename Container>
auto Func(Container const &a_container)
{
auto a_begin = std::rbegin(a_container);
auto a_end = std::rend(a_container);
using T = typename Container::iterator::value_type;
std::unordered_set<T*, Hashf<T>> mytest;
auto it_temp = a_end;
mytest.insert(a_begin); //cant insert the pointer
return it_temp;
}
问题是如何将指针(或迭代器)插入到unordered_set?插入函数失败。
我试图创建一个哈希集来存储指针。
发布于 2022-11-30 00:27:30
迭代器和指针是不同的类型。因此,您不能将迭代器插入到一组T*
;但是,您可以取消引用并获取它的地址:
mytest.insert(&*a_begin);
https://stackoverflow.com/questions/74621648
复制相似问题