我正在嘗試將數字電子問題適應於基於C++ STL的程序。C++的case聲明?
本來我有4個輸入C1,C2,C3,C4。這意味着我有一個總的16種組合:
0000
0001
.
.
.
1111
我具有由
typedef std::pair<int, int> au_pair; //vertices
typedef std::pair<int, int> acq_pair; //ch qlty
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(It_au it = a_map.begin(); it != a_map.end(); it++)
{
acq_pair it1 = it->second;
//case 0:
//C3 = 0, C2 = 0, C1 = 0, C0 = 0
//Update it1.second with corresponding C values
//simulate algorithm
//case 1:
//C3 = 0, C2 = 0, C1 = 0, C0 = 1
//simulate
.........
//case 15:
//C3 = 1, C2 = 1, C1 = 1, C0 = 1
//simulate
}
爲什麼std :: map更喜歡std :: vector?你肯定會獲得更好的性能與std :: vector。 – andand 2010-06-24 15:41:07
@andand在16個狀態的情況下 - 是 - 'std :: vector'中的'O(N)'查找時間將比'std :: map'中的'O(log N)'查找時間好。但僅僅因爲狀態數量增長爲'A^N',其中'A'代表可能的值,'N'代表輸入數字,'std :: map'會給出更好的漸近性能。 **並且是 - 爲什麼在性能分析之前談論性能?** – 2010-06-24 15:49:46
@andand另外值得一提的是,'std :: map'可以很容易地切換到例如'boost :: unordered_map',賦予'O(1)'查找時間。 – 2010-06-24 15:51:06