出来栄えが変わってきます。
map
C++ でのサンプル テスト (g++は赤黒木に基づいており、それを使用していることを知っています):
#include <iostream>
#include <map>
#include <cstdlib>
#include <ctime>
using namespace std;
const int N = 50000;
const int REPS = 100;
int ints[N];
int main()
{
time_t t;
srand(time(0));
// fill ints[] with ints from 0 to N-1
for (int i = 0; i < N; i++)
ints[i] = i;
// randomly shuffle ints[]
for (int i = 0; i < N; i++)
{
int j = ((unsigned)rand() * rand()) % N;
int t = ints[i];
ints[i] = ints[j];
ints[j] = t;
}
cout << "Inserting " << 2 * N << " sorted keys, repeating " << REPS << " times..." << endl;
time(&t); cout << ctime(&t) << endl;
for (int n = 0; n < REPS; n++)
{
map<int,int> m;
for (int i = 0; i < N; i++)
m[i] = i;
for (int i = 0; i < N; i++)
m[N + i] = i;
}
time(&t); cout << ctime(&t) << endl;
cout << "Inserting " << N << " sorted keys and then " << N << " unsorted keys, repeating " << REPS << " times..." << endl;
time(&t); cout << ctime(&t) << endl;
for (int n = 0; n < REPS; n++)
{
map<int,int> m;
for (int i = 0; i < N; i++)
m[i] = i;
for (int i = 0; i < N; i++)
m[N + ints[i]] = i;
}
time(&t); cout << ctime(&t) << endl;
return 0;
}
出力 ( liveworkspace ):
Inserting 100000 sorted keys, repeating 100 times...
Sun Apr 7 04:14:03 2013
Sun Apr 7 04:14:05 2013
Inserting 50000 sorted keys and then 50000 unsorted keys, repeating 100 times...
Sun Apr 7 04:14:05 2013
Sun Apr 7 04:14:10 2013
ご覧のとおり、パフォーマンスは著しく異なります。並べ替えられた挿入では 2 秒、並べ替えられていない挿入では 5 秒です。