私はこのようなset<set<int> >
名前の2x3を持っていss
ます:
5 6 7
6 7 8
そして、私はその中のすべてを削除して、次6
のようになりたいです:
5 7
7 8
私がやろうとしていること:
for (set<set<int> >::iterator it = ss.begin(); it != ss.end(); it++) {
it->erase(6);
}
これは私にエラーを与えます:
error: passing ‘const std::set<int>’ as ‘this’ argument of ‘std::set<_Key, _Compare, _Alloc>::size_type std::set<_Key, _Compare, _Alloc>::erase(const key_type&) [with _Key = int, _Compare = std::less<int>, _Alloc = std::allocator<int>, std::set<_Key, _Compare, _Alloc>::size_type = long unsigned int, std::set<_Key, _Compare, _Alloc>::key_type = int]’ discards qualifiers [-fpermissive]
渡すことでコンパイルでき、-fpermissive
正常に動作しているようですが、このエラーは何なのか疑問に思いました。
私が試したハイドの提案の後に編集してください:
for (set<set<int> >::iterator it = ss.begin(); it != ss.end(); it++) {
set<int> temp(*it);
temp.erase(6);
ss.erase(*it);
ss.insert(temp);
}
これは機能しているように見えるので、彼が言ったように、セットでは要素を変更できないと思います。