C++基礎回顧(vector的使用)
前言
最近用python刷了些演算法題不過總覺得不太順手,很多題目總是會超時,想了想還是用C++來刷吧。由於已經很久沒有敲過C++的程式碼,所以需要對一些常用的知識進行回顧。對於刷演算法題目來說,STL應該算是比較常用的一個工具了,故優先對此進行回顧。 文章中的主要內容都是來源於郭煒老師在中國大學慕課上的公開課( 程式設計與演算法(三)C++面向物件程式設計 )以及C++ Primer Plus這本書 。另外,在文章的最後我也會用一道LeetCode的題目來簡單運用一下今天的知識。
一、vector的簡單介紹
標準庫型別vector表示物件的集合。其中所有物件的型別都相同。類似陣列,集合中的每個物件同樣有索引,用於隨機訪問物件。因為vector容納著其他物件,所以其亦被稱之為“容器”(更準確的說是“順序容器”)。
1.1 定義和初始化vector物件

三種常用初始vector方法(第二種要求編譯器支援C++11,此處註釋掉,實際是可用的)
1.2 vector物件的常用操作

vector常用的函式,如size()、insert()、push_back()等等
1.3 vector的遍歷

一個非常常規的遍歷vector的方法
事實上,存在更簡便的遍歷方式。但是由於我現在所用的編譯器不支援C++11,在此僅僅給出程式碼。
首先,你要先給出一個print()函式。
void print(int n)
{
cout<<n<<endl;
}
其次,應用for_each函式進行遍歷即可,程式碼如下。
for_each(v1.begin(),v1.end(),print);
二、解決一道與此相關的演算法題
下方為解決程式碼

暴力解決法
可以看出,這裡是採用了兩層迴圈,即為最簡單的蠻力法。雖然編譯通過,但是效率是極其低下的,僅僅超越了15%的使用者。不過今天只是拿這個例子來將剛才學到的知識聯絡一下,以後,我們再考慮對此演算法進行優化,這裡就暫且用這個笨方法做著吧。