2d ベクトルvector < vector <int> > N
を考えてみましょう。その内容は次のとおりです。
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
したがって、ここでの N のサイズは 4 です。N.size() = 4
ここで、次のコードを検討してください。
int i = 0;
while(N != empty()){
N.erase(i);
++i;
}
N のさまざまなサイズを使用して、このコードだけの時間を計算した結果は次のとおりです。
N のサイズは 1000 実行時間: 0.230000 秒
N のサイズは 10000 実行時間: 22.900000 秒
N のサイズは 20000 実行時間: 91.760000 秒
N のサイズは 30000 実行時間: 206.620000 秒
N のサイズは 47895 実行時間: 526.540000 秒
私の質問は、なぜこの機能がそれほど高価なのですか? そうである場合、多くのプログラムの条件付き消去ステートメントは、この機能のために永遠にかかる可能性があります。で消去機能を使う場合も同様std::map
です。この機能に代わるものはありますか。Boost のような他のライブラリは提供していますか?
N.erase()
この機能を分析しようとしているだけなので、全体としてできるとは言わないでください。