static void doTest(ArrayMap<Foo> &am, Map &m, int k, int v) { cout << "Updating with (" << k << ", " << v << ")" << endl; am.set(k, am.get(k) + v); m[k] = m[k] + v; set<int> visited; for (int i = 0; i < 10000; ++i) { if (visited.end() != visited.find(i)) continue; visited.insert(i); const int kk = am.minKey() + ::rand() % ((am.maxKey() - am.minKey()) * 2); const int r1 = am.get(kk), r2 = m[kk]; if (r1 != r2) { cerr << "For " << kk << ": am -> " << r1 << " != " << r2 << " <- m" << endl; } } }