3

皆さんこんにちは :) 個人的なセット クラスを作成し、演算子 /= をオーバーロードしたいのですが、私のクラスの場合、この演算子は 2 つのセットのインタースティションを取るために使用する必要があります。次のエラーが発生しました。

エラー: 読み取り専用の場所 '__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 に答える