以下代码由于编译unordered_set的哈希函数时使用不完整类型Dir而无法编译。有没有办法解决这个问题。我猜想添加另一个类可能会解决此问题。但是解决这种情况的最佳实践是什么。
auto pred = [](const auto& v) {
return std::hash<std::string>()(v.name);
};
struct Dir{
bool operator==(Dir const& other) {
return name == other.name;
}
std::string name;
std::unordered_set<Dir, decltype(pred)> down;
};
答案 0 :(得分:0)
这解决了问题,看上去,唯一性,Dir的添加/删除都得到了照顾。但是我们需要紧密跟踪列表和unordered_map以确保其正常工作。不确定这是否是最好的方法。
struct Dir{
std::string name;
std::list<Dir> down;
std::unordered_map<std::string, std::list<Dir>::iterator> downMap;
};