//////////////////////////////////////////////////////////// // Multimap // void Multimap() { _server->registerMethod("multiplymultimap", *this, &BinRpcTest::multiplyMultimap); cxxtools::bin::RpcClient client(_loop, "", _port); cxxtools::RemoteProcedure<IntMultimap, IntMultimap, int> multiply(client, "multiplymultimap"); IntMultimap mymap; mymap.insert(IntMultimap::value_type(2, 4)); mymap.insert(IntMultimap::value_type(7, 7)); mymap.insert(IntMultimap::value_type(7, 8)); mymap.insert(IntMultimap::value_type(1, -1)); multiply.begin(mymap, 2); const IntMultimap& v = multiply.end(200); CXXTOOLS_UNIT_ASSERT_EQUALS(v.size(), 4); CXXTOOLS_UNIT_ASSERT(v.lower_bound(2) != v.end()); CXXTOOLS_UNIT_ASSERT_EQUALS(v.lower_bound(2)->second, 8); CXXTOOLS_UNIT_ASSERT(v.lower_bound(7) != v.end()); CXXTOOLS_UNIT_ASSERT_EQUALS(v.lower_bound(7)->second, 14); IntMultimap::const_iterator it = v.lower_bound(7); ++it; CXXTOOLS_UNIT_ASSERT(it != v.end()); CXXTOOLS_UNIT_ASSERT_EQUALS(it->first, 7); CXXTOOLS_UNIT_ASSERT_EQUALS(it->second, 16); CXXTOOLS_UNIT_ASSERT(v.lower_bound(1) != v.end()); CXXTOOLS_UNIT_ASSERT_EQUALS(v.lower_bound(1)->second, -2); }
IntMultimap multiplyMultimap(const IntMultimap& m, int f) { IntMultimap ret; for (IntMultimap::const_iterator it = m.begin(); it != m.end(); ++it) { ret.insert(IntMultimap::value_type(it->first, it->second * f)); } return ret; }
bool Init() { int nRandom = 0; for (int i = 0; i < g_nMax; ++i) { nRandom = i; g_nSummary += nRandom; g_dInts.push_back(nRandom); g_hmInts.insert(std::make_pair(nRandom, nRandom)); g_hsInts.insert(nRandom); g_lInts.push_back(nRandom); g_mInts.insert(std::make_pair(nRandom, nRandom)); g_mmInts.insert(std::make_pair(nRandom, nRandom)); g_msInts.insert(nRandom); g_sInts.insert(nRandom); g_vInts.push_back(nRandom); } return true; }