unordered_set按地址传递

时间:2013-10-13 18:16:23

标签: c++ stl unordered-set

我已经从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);

它仍然会出现同样的错误。

1 个答案:

答案 0 :(得分:1)

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

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