1. 程式人生 > >使用vector 和map構造二維矩陣和二維表格

使用vector 和map構造二維矩陣和二維表格

            使用vector map構造二維矩陣和二維表格

眾說周知,我們可以適應vector容器來構造二維陣列.當然這樣雖然會帶來安全性的優勢但是會帶來效率上的低下.效率差異的主要原因便在於編譯器對二維陣列的優化.當然,在平日的編寫過程中由於安全性的原因,我個人是比較傾向於使用.

關於二者效率的對比可以看下列網址

   那麼怎麼使用vector構造二維陣列呢?

使用下列舉行來構造

#define N 5

#definde M 5

vector<vector<int> > Matrix(N, vector<int>(M));

這樣就構造一個好一個二維矩陣了

當然如果對使用指標構造二維陣列感興趣的可以看下列網址

後來在寫某個程式的時候意外要儲存一個表格

A

B

C

D

E

a

b

c

d

表格內的各種存放一個字串.最初的想法是構造一個三維字元陣列char ***;

後來在因為在寫二維陣列的時候突然想到可以使用容器vector,進而想到使用更為有利的map來嘗試實現表格

Map的定義如下

map 是鍵-值對的集合。map 型別通常可理解為關聯陣列(associative array):可使用鍵作為下標來獲取一個值,正如內建陣列型別一樣。而關聯的 本質在於元素的值與某個特定的鍵相關聯,而並非通過元素在陣列中的位置來獲 取。 

詳細的細節和對應的函式,適應說明參照

由於

定義與初始化

與vector類似,用於map構造的表格具有類似的形式.

map<型別1,map<型別2,型別3>>;

在這裡採用的儲存模式為

型別1  -> (型別2 -> 型別3)

使用兩個資料來確定另一個數據的儲存.例如在上述表述的表格可以採用如下的方式來儲存

map<char, map<char, string>> Table;

這樣完成了表格的構造了;

由於map獨特的[]操作,這裡要重點說一下

在map中:用下標訪問不存在的元素將導致在 map 容器中新增一 個新元素,它的鍵即為該下標值。

而在上述的Table中,採用Table[‘A’][‘a’] = “aBCD”;

可能有多重含義

(1)原本的Table[‘A’][‘a’]修改為”aBCD”

(2)不存在Table[‘A’][‘a’],在Table新增上一個Table[‘A’][‘a’] = ”aBCD”;

當然為了避免引發歧義,也可以在這裡使用map裡面的find和insert函式