vector是什麼東東呢?就是它字面意思,向量。怎麼理解呢?高中數學中我們學了能表示二維平面的中某一點的向量,以及三維空間中表示某一點的向量。到了大學,我們更加了解到<>中有多少個數字就能表示多少維度空間中的一點。c++借鑑並擴充套件了這個表示方法,用它來表示同種型別元素的聚集(我之所以不說是「集合」,是因為集合是元素不可重複的)。vector是stl容器的一種,因此它具有理論上儲存無限元素的能力(這主要取決於記憶體大小的啦~)。vector涉及到模板以及一些更深的東西,但由於它的易用性及良好效能不得不提前拿出來遛一遛~
記得高中物理老師說過一句話:萬變不離其宗。果然沒錯,認識乙個型別還是得從它的初始化開始啊。vector是std命名空間 中的一員,標頭檔案是。
# include using namespace std;
vectorv1;//1. 定義乙個vector物件v1,儲存t型別的元素
vectorv2(v1);//2. 定義乙個vector物件v2,並用v1初始化
vectorv3 = v1;//3. 同2
vector v4(n, val);//4. 定義乙個vector物件v4,並往裡邊塞了n個t型別的元素val
vectorv5;//5. 初始化列表,建立乙個包含元素為a,b,c的vector物件v5
vectorv6 = ;//6. 同5
這裡出現了t型別,這是啥玩意兒呢?這就是模板引數,現在你只用知道:只要是能夠定義乙個變數的型別,都可以用來替換t。比如:
vectorvec(5,10);//建立了乙個包含5個10的vector物件vec,即,vec = ;
//當然,你也可以這樣:
vector> vec1;//這個的意思就是宣告了乙個vector物件vec1,他儲存的元素為vector
也就是說,vector是可以巢狀的。機智的小鍋鍋小姐姐們有沒有發現什麼神奇的東西呢?沒錯,就是下邊這個圖:
如果使用一層vector你可以表示一維空間的話,那麼使用巢狀vector就可以用來表示超過一維的空間!而且,這個空間還可以是非規則的,因為你可以任意改變每一層的vector的容量。
小帥翔提示下邊這兩個初始化需要留意,因為他們含義不同。具體為什麼後續再說明。
vectorvec;//正確,初始化只含有乙個元素10的vec物件
vectorvec1(10);//正確,初始化含有10個預設元素0的vec物件
vectorvec2;//正確,使用初始化列表將字面值存到vec2中
vectorvec3("xiaoxianggezuishuai");//錯誤,不能用字面值構造vector物件
下邊介紹一些超級常用的方法,學會這些方法,你就可以橫著使用vector了哈哈哈哈~
首先我們宣告乙個vector變數v,則有:
v.empty();
如果v不含任何元素,則返回true,否則返回false
v.size();
返回v中元素個數
v.push_back(t);
在v尾端新增乙個元素t
v[n];
n是整型資料,和陣列類似的用法,表示取出v中索引為n的元素
v1 == v2
v1,v2相等,當且僅當他們的元素型別相同,元素個數相等,而且對應位置處的元素值相等
v.insert(it,val);
在指定的it位置插入乙個元素val,it是乙個迭代器
v.erase(it);
刪除指定it位置的乙個元素,it是乙個迭代器
v.clear();
清空v中的所有元素注意不允許在迴圈體內做可能改變vector大小的操作。切記!
上邊有兩個方法使用到了迭代器,那什麼是迭代器呢?迭代器其實是一種設計模式,具體是什麼現在還不用管那麼多,魯迅先生說過:曾經有乙個很好的遍歷容器的方法擺在我面前,但我沒有珍惜,而是直接拿來使用了。哈哈哈哈哈。
小帥翔提示想要獲取vector的迭代器,很簡單:迭代器的使用和指標類似,使用「->」訪問被指向物件的成員,使用「*」解引用。
vectorvec;
auto it1 = vec.begin();//獲取乙個指向vec中第乙個元素的迭代器,也就是1
auto it2 = vec.end();//獲取乙個指向vec中最後乙個元素下一位置地迭代器,這裡it2指向的是3後邊乙個位置
說明
//正向遍歷vec中的元素,end()作為遍歷結束標誌
for (; it1 != vec.end(); ++it)
cout << *it1<< endl;
//移動迭代器it1到元素2的位置
it1 += 1;
jsp兩個數字相加 2 兩數相加
題目 給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0...
PTA 兩個時間相加
時間類time的參考框架如下,通過過載操作符 實現兩個時間的相加,要求將小時範圍限制在0 23時,分鐘範圍限制在0 59分,秒鐘範圍限制在0 59秒。設計主程式,讀入兩個時間,對時間的合法性進行判斷,若時間不合法,則輸出 time error 若時間值合法,則進行兩個時間的相加,並將結果以 小時 分...
python 兩列表對應元素相加形成新列表 zip
zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。zip 方法在 python 2 和 python 3 中的不同 在 python 3.x ...