10.12 array:披上容器外衣的陣列(延伸知識)
想把「固定幾個一組」的資料裝進 vector——例如每個學生有三科成績,想要一個「裝三元組」的 vector。直覺會寫 vector<int[3]>,但行不通:vector 的元素必須能整個複製,而普通陣列偏偏不能(8.8 的 t = s;、10.6 開頭的「陣列不能 a = b」都是同一個遺憾)——一對它 push_back,編譯器就翻臉。pair 也幫不上忙——它只綁兩個值。
這就是 array 容器派上用場的地方。它定義在 <array> 裡,角括號給兩個參數:元素型態和大小——大小是型態的一部分,宣告後不能改變。用起來跟普通陣列幾乎一樣([i] 取值、越界一樣是 UB),但它把陣列包裝成可以整個複製、指派的型態——普通陣列的那個遺憾補上了,所以能當 vector 的元素;身為正牌容器,還多了 size() 等標準配備: