によって定義されたマルチマップがあります
typedef std::pair<int, int> au_pair; //vertices
typedef std::pair<int, int> acq_pair; //ch qlty specified by C
typedef std::multimap<int, acq_pair> au_map;
typedef au_map::iterator It_au;
いいえ。シミュレーションの数は、のサイズによって異なりますau_map
。たとえばau_map.size() = 5
、C1、C2、C3、C4、C5がある場合。したがって、2 ^ 5=32ケース。
例:の場合、au_map.size()=4
16のケースでアルゴリズムをシミュレートする必要があります。
for(size_t i = 0; i != 16; ++i)
{
for(It_au it = a_map.begin(); it != a_map.end();)
{
acq_pair it1 = it->second;
//case 0:
//C1 = 0, C2 = 0, C3 = 0, C4 = 0
//@Matthieu M 's suggestion http://stackoverflow.com/questions/3110975/c-case-declaration-closed
//bool const c1 = i & 1;
//bool const c2 = i & 2;
//bool const c3 = i & 4;
//bool const c4 = i & 8;
//Update it1.second with corresponding C values
it->second.second = C1;
it++;
it->second.second = C2;
it++;
it->second.second = C3;
it++;
it->second.second = C4;
it++;
}
//simulate algorithm
}
Cのサイズがに応じて変化するこのプロセスを自動化するにはどうすればよいau_map.size()
ですか?したがって、C1、C2、C3、C4の場合はau_map.size() = 4
、C1、C2、C3、C4、C5の場合になりau_map.size() = 5
ます。
また、これらの値を持つベクトル、またはこれをマルチマップ内のペアに追加するのが好ましいのは何ですか?ベクトルルックアップ時間はマルチマップよりも短くなります。
また、マルチマップに値を挿入し続けると、新しい/更新された値がアルゴリズムに渡されますか?