0

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

它仍然给出相同的错误。

4

1 回答 1

1

在 C++11 中, astd::set或中的项目std::unordered_set都是const. 您不能插入其中之一,您必须将其删除并重新添加。

这是因为您正在通过其哈希值确定父集中的位置,如果您向其中添加新项目,该位置可能会发生变化。这类似于存在中的std::mapconst

于 2013-10-13T18:30:26.943 回答