3

大家好 :) id 喜欢创建一个个人集合类并重载运算符 /=,在我的类的情况下,这个运算符应该用于获取两个集合的交互。我收到以下错误:

错误:分配只读位置 '__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++ 的新手,我不明白我在哪里试图在只读位置分配一些东西......请你向我解释一下,然后告诉我应该如何正确使用 set_intersection(来自库

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

4

1 回答 1

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()));
于 2014-09-18T16:47:14.233 回答