在刷ccf題的時候日常做完去網上檢視別的同學怎麼做的
發現有使用vector後三十幾行**就寫出來的,雖然時間複雜度和我一樣十幾毫秒,but !我看中了它的**量啊!多麼的少啊!
1.簡單的介紹vector:
在c++語言中使用,是一種順序容器,事實上和陣列差不多,但它比陣列更優越。一般來說陣列不能動態拓展,因此在程式執行的時候不是浪費記憶體,就是造成越界。而vector正好彌補了這個缺陷,它的特徵是相當於可分配拓展的陣列,它的隨機訪問快,在中間插入和刪除慢,但在末端插入和刪除快。/ps 官方用語
2.什麼時候使用
:
如果你想使用陣列來進行插入刪除查詢時,其中會不可避免的遇到移動一大堆的陣列元素,比如某個元素的值被刪除,那麼後面的都要向前移動的時候,推薦你使用vector,因為它不考慮陣列下標啊!!!通過指標刪除元素的值可以說非常方便了!節省了很大的時間啦,但是問題也是在這裡出現:在中間插入與刪除慢,emmm這個慢其實比大容量陣列我們自己移動快很多好伐
3怎麼使用:
標頭檔案:
#include
基本操作:
//容量vec.size();//
向量大小
vec.max_size();//
向量最大容量
vec.resize();//
更改向量大小
vec.capacity();//
向量真實大小
vec.empty();//
向量判空
vec.shrink_to_fit(); //
減少向量大小到滿足元素所佔儲存空間的大小
//修改
vec.assign(); //
多個元素賦值,類似於初始化時用陣列進行賦值
vec.push_back();//
末尾新增元素
vec.pop_back();//
末尾刪除元素
vec.insert();//
任意位置插入元素
vec.erase();//
任意位置刪除元素
vec.swap();//
交換兩個向量的元素
vec.clear();//
清空向量元素
//迭代器
vec.begin();//
開始指標
vec.end(); //
指向最後乙個元素的下乙個位置
vec.cbegin(); //
指向常量的開始指標,意思就是不能通過這個指標來修改所指的內容,但還是可以通過其他方式修改的,而且指標也是可以移動的。
vec.cend();//
指向常量的末尾指標:
//元素的訪問
vec[1]; //
下標訪問,並不會檢查是否越界
vec.at(1); //
at方法訪問,以上兩者的區別就是at會檢查是否越界,是則丟擲out of range異常
vec.front();//
訪問第乙個元素:
vec.back();//
訪問最後乙個元素:
int* p = vec.data(); //
返回乙個指標,可行的原因在於vector在記憶體中就是乙個連續儲存的陣列,所以可以返回乙個指標指向這個陣列。
4.使用案例
#include#include#include
#include
using
namespace
std;
intmain()
printf("\n
");for(it = v1.begin();it != v1.end();it++)
cout
<<*it<<"
";
cout
it += 1
; cout
<<"
第二個數為:
"<<*it<<"
"
//刪除倒數第二個數
it =v1.begin();
it += 1
; cout
<<"
刪除之前第二個數後,新的第二個數為:
"<<*it<<"
"
cout
<<"
清空後元素個數為:
"return0;
}
可以看見,我們刪除乙個元素後,該位置自動由後面的元素填充,不需要我們手工移啊移,而且也不需要實現定義陣列的大小,避免溢位,很方便啦
vector 簡單使用
vector是c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector之所以被認為是乙個容器,是因為它能夠像容器一樣存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。為了可以使用vector,必須在你的標頭...
vector簡單使用
其實vector並不難,就是別用混了就行了。vectorv 這是定義乙個int型向量 vectorv n 這是定義初始大小為n的向量 vectorv n,1 這是定義初始大小為n,初始值為1的向量 vector v 這樣就巢狀定義了,他可以巢狀本身,不過注意後面兩個 中間有個空格 vectorv 5...
vector容器的簡單介紹與使用
直接改變容器的大小 vector容器就是能夠儲存很多資料,但是必須是相同型別的。類似陣列,但是按需分配。容器的構造方式 1 需要新增標頭檔案 2 vector 型別 容器名 include include 容器使用標頭檔案 using namespace std int main vectorv 插...