在set容器上使用set_intersection。

时间:2013-12-16 18:58:42

标签: readonly set-intersection

大家好:)我想创建一个personnal set Class并重载运算符/ =,在我的类的情况下,应该使用这个运算符来取两个Sets的集合。 我收到以下错误:

错误:分配只读位置'__result.std :: _ Rb_tree_const_iterator< _Tp> :: operator *()'

以下是代码中给出此错误的部分:

Set& operator /=(const Set& st) // Substraction Assignement operator
{
    set<T> tmp;

    set_intersection(m_set.begin(), m_set.end(), st.m_set.begin(), st.m_set.end(), tmp.begin());
    *this = tmp;
    return *this;
}

我是c ++的新手,我不明白我在哪里尝试在只读位置分配某些内容... Plz你可以向我解释一下,告诉我如何正确使用set_intersection(来自库

对不起我的大概英语,已经感谢你帮助= D

1 个答案:

答案 0 :(得分:2)

您需要使用插入器才能使其正常工作。

set<T> tmp;

set_intersection(m_set.begin(), m_set.end(),
                 st.m_set.begin(), st.m_set.end(), std::inserter(tmp, tmp.begin()));