この操作でアプリがクラッシュしました:
std::multimap<int, std::string, std::greater<int>> mm;
// insert elements
auto it = mm.end();
std::advance(it, -(mm.size() - 7));
クラッシュのメッセージは次のとおりです。
Expression: map/set iterator not incrementable
何が問題ですか?
-(mm.size() - 7)
編集:クラッシュしなかった代わりに-1だけを書いたとき、なぜですか? mm.size() をデバッグするときは 8 であることを考慮してください。
EDIT 2:私が書くとき、std::advance(it, -(static_cast<int>(scoresMap.size()) - 7));
それは動作します。マルチマップのサイズタイプが原因ですが、何が原因かはまだ推測できません。