MSVC2010を使用しています。
リストから重複を(それらのいずれも保持せずに)削除しようとしています
このコードがデバッグ モードで 100 倍遅いのはなぜですか?
同等のすべてのオブジェクトを削除し、デバッグ モードで高速化する他の方法はありますか?
現時点ではデバッグを使用できないところまで来ています。リリースには数秒かかりますが、処理には数分かかります。
void SomeFunction()
{
std::list<Something> list;
std::list<Something>::iterator it1;
std::list<Something>::iterator it2;
for (it1 = list.begin(); it1 != list.end(); it1++)
{
for (it2 = list.begin(); it2!=list.end(); it2++)
{
if (it1->SomeValue() == it2->SomeValue())
{
if (it1 != it2)
{
list.erase(it1);
list.erase(it2);
it2 = list.begin();
it1 = it2++;
}
}
}
}
}