サイズが約 2000 のベクトルがある場合、std::unique が本来の動作をしていないことに気付きました。より小さなベクトルで unique を試したところ、期待どおりに動作しました。両方のベクトルの中間に約 30 個の重複エントリを追加して、これをテストしました。小さい方のベクトルでは、予想どおり、unique はそれらの余分な 29 エントリをベクトルの最後に配置します。ただし、より大きなベクトルでは、重複エントリの 1 つのエントリのみが存在します。私が超えている限界がある可能性はありますか?大きなベクトルと小さなベクトルの両方に同じコードが使用されました。
sort(dbaselista.begin(),dbaselista.end());
vector<string>::iterator lasta = unique(dbaselista.begin(),dbaselista.end());
//dbaselista.erase(lasta, dbaselista.end());
簡単な例として、
小さなベクトル: 19AB 175D 12AC 19F7 19F7 19F7 19F7 209C 20AF
結果: 12AC 175D 19AB 19F7 209C 20AF 19F7 19F7 19F7
はるかに大きなベクトルで同じコードを実行した場合、19F7 は 1 回しか存在しません。