關於c++中的vector的一些學習記錄
vector是c++中的乙個資料結構,確切的說是乙個類,相當於動態陣列,當程式設計的時候無法知道自己需要多大的陣列規模的時候可以使用vector節約空間和節省**的作用(我理解vector無法實現節約時間的作用,因為極有可能是類似於c語言中的單鏈表的方式來實現的,那麼就會存在申請記憶體的時間,肯定會消耗比單純一次性申請足量的陣列使用的時間要長)。
用法
宣告方式
vector《元素資料型別》 變數名;
-vectora;
宣告了乙個int
陣列a;
,但是長度動態變化,可以向裡面增加或者刪除int
元素;
-vectora;
宣告了乙個char
陣列a;
,但是長度動態變化,可以向裡面增加或者刪除char
元素;
- 使用vector代替二維陣列。只是需要宣告乙個一位陣列向量即可,而乙個陣列的名字其實代表的就是他的首位址,所以只是需要宣告乙個位址的向量即可:vectora;
,三維的表示方法則是vectora;
vector中常用的操作函式包含(有一些沒有寫到是暫時沒有使用到過,以後會補充):
a.push_back();//在尾部增加乙個資料
a.pop_back();//刪除最後乙個資料
a.at(idx);//傳回指向索引idx的資料,如果idx越界,則丟擲out_of_range
a.begin();//返回指向容器第乙個元素的迭代器,是個位址
a.front();//傳回第乙個資料
a.back();//傳回最後乙個資料,不檢查該資料是否存在
a.max_size();//返回容器中最大資料的數量
a.capacity();
a.size();//返回容器中的元素個數
a.resize();//重新制定佇列的長度
a.reserve();//保留適當的容量
a.erase(pos);//刪除pos位置的元素,傳回下乙個資料的位置
a.erase(beg,end);//刪除位置beg到位置end的資料,傳回下乙個資料的位置
a.clear();//移出容器中所有的資料
a.rbegin();//傳回乙個逆向佇列的第乙個資料
a.rend();//傳回乙個逆向佇列的最後乙個資料的下乙個位置
a.empty();//判斷容器是否為空
a.swap(b);//將a和b元素進行互換也可以通過swap(a,b);實現
a.assign();
a.shrink_to_fit();
a.crbegin();
a.crend();
a.cbegin();
a.cend();
a.emplace();
a.data();
a.insert(pos,elem);//在pos位置插入乙個元素elem,傳回新資料位置
a.insert(pos,n,elem);//在pos位置插入n個elem資料,無返回值
a.insert(pos,beg,end);//在pos位置處插入位置beg到位置end之間的資料,無返回值
a.emplace_back();
再次把之前聯想回文數那道題目的vector方法貼上來,順便自己再琢磨琢磨vector實現二維陣列的方法與要點:
#include
#include
using
namespace
std;
bool ispalindrome(int x)
eve.push_back(x);
int len = eve.size();
for(i = 0;i <= (len /2);i++)
}return
true;
}void main(void)
cout
<"pause");
}
C 學習筆記之vector類詳解
1.在c 中的詳細說明 vector是c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector之所以被認為是乙個容器,是因為它能夠像容器一樣存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。2.使用vect...
C 中 vector容器 模板類陣列
對vector容器的一點理解,相對於陣列,vector容器可以不固定大小,但是需要而外的記憶體 空間,這是用空間來換取陣列動態大小的一種方式 1.定義 vector a 定義了乙個空的int型陣列 vectorb n 定義了乙個長度為n的double型陣列 vectorb c 定義乙個c的副本 ve...
C 中vector和vector的區別
在使用stl容器 比如map list vector等 的時候,是用放乙個物件還是放乙個物件指標,即是用vector還是vector,這裡的vector可以換成其他的容器,int可以換成其他基本型別,也可以自定義的資料結構或類。首先,要說明的是,這兩種方式,怎麼用都可以實現功能,把一組整型數放到容器...