前言

在處理資料時經常會需要用到 struct 方式,將許多不同型態但屬於同一筆之下的資料包在一起

這麼做的同時通常也會需要好幾筆資料,每一筆都包著許多東西,舉例來說像通訊錄有好幾筆,每筆都包含了姓名、電話、甚至性別等等的

概念

以前寫C的時候宣告struct array就是直接開global,然後大小先開個1.2千,就算大二開始接觸C++,碰到struct array也還是這樣幹

大概是長下面這樣子

1
2
3
4
5
struct phoneBook{
string name;
string phoneNumber;
};
struct phoneBook book[1000];

除非處理的資料很少(<10萬筆),不建議在C++這樣使用,尤其當你無法從宣告就確定需要儲存幾筆資料的時候

至於C的話,我不是很清楚如何resize了,這可能牽扯到在C裡面設計動態陣列了(也就是C++已經幫你寫好提供給你的東西)

現在開始認真寫C++之後,發現了許多很有效率的宣告方式以及library function

難怪古人說 “不要重造車子的輪子”

C++的特色就是vector (dynamic array),並且支援template資料型態的結構 <>

在C++可以使用struct,需要使用struct array時,就直接用vector然後包住struct

用vector的好處就是你可以先宣告好array,等確定資料有幾筆在resize就好,或是一個一個push

大概如下

1
2
3
4
5
6
struct phoneBook{
string name;
string phoneNumber;
};
std::vector<phoneBook> book;
book.resize(number_youwant);