大家好:)我想创建一个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
答案 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()));