我已经从C转到C ++,最近学习了STL。

最后一行在STL样式中给出了很长的错误(无助),或者我是模板的新手,这就是为什么我觉得无助。

int insert(Forest *forest, int e1) {
    Forest::const_iterator te1;
    te1 = forest->begin();
    te1->insert(e1);
}
int main() {
    //some code here
    Forest forest = (5, myHash);
    insert(&forest, e1);
}


森林是:

typedef unordered_set<unordered_set<int>, function<size_t(const unordered_set<int>)>> Forest;


编辑:
尝试作为建议的答案之一后

Forest::iterator te1 = forest->begin();
te1->insert(e1);


它仍然给出相同的错误。

最佳答案

在C ++ 11中,std::setstd::unordered_set中的项目均为const。您不能插入其中之一,必须将其删除并重新添加。

这是因为您要通过其哈希值确定父集中的位置,如果向其添加新项目,则哈希值可能会更改。它类似于std::map中的键是const

关于c++ - unordered_set通过地址传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19348567/

10-13 09:29