c 標頭檔案之Vector Vector的用法

2021-10-21 11:18:29 字數 3147 閱讀 3447

開始學習c++,再這個過程中第乙個令人頭疼的地方就是標頭檔案的含義了,c++標頭檔案的內容會隨著我的深入學習進行更新.

首先,我們需要該清楚vector的定義: c++標準庫提供了被封裝的動態陣列——vector。大體上講,就是更容易上手的動態陣列.讓我們看看vector的優缺點.

優點:1). vector可以存放任意型別的資料

2). 容量可以自動擴充套件

3). 初始化形式簡單,多樣

4). 可以插入或刪除元素

5). 可以獲取陣列的長度(是否為空)

6). 也是通過下標來訪問的

7). 能夠一下清除所有資料

8). 強制調整陣列元素的個數以及數值

9). 將陣列的容量進行人為的擴大

10). 將兩個vector陣列的值進行整體**換

缺點: vector的操作簡單,容易上手,是陣列的"公升級版",但是vector的每次自動擴容都是增加當前空間的50%(第一次除外);會消耗大量的空間與時間,所以小資料使用vector還是很高效的.

**如下(示例):

#include

using namespace std;

**如下(示例):

//1. 直接賦值

vector a1 ; //一維

vector > a2 ,};//二維

//2. 不帶引數構造

vector a1;//空的陣列,長度為0(size()為0)可以用push_back(elem)輸入元素

//3. 帶引數構造

vector a2(10); //10個資料全為0

vector a3(10,1);//10個資料全為1

//4. 通過同型別的vector初始化

vector a1(5,1);

vector a2(a1); //通過a1來初始化a2

3.1 通過位址訪問

**如下(示例):

///通過位址訪問

vector<

int> a1

;//一維

vector<

int>

::iterator k=a1.

begin()

;//返回第乙個元素的位址

cout<<

*k

cout<<

*(k+1)

vector<

int>

::iterator k=a1.

end();

cout<<

*(k-1)

3.2 通過下標訪問

**如下(示例):

///通過下標訪問

vectora1 ; //一維

cout<4.1 插入,刪除(棧頂)

**如下(示例):

///新增,刪除

a.pop_back()

;//刪除最後乙個元素

a.push_back

(elem)

;//在尾部新增乙個元素

4.2 特定位置插入刪除

**如下(示例):

///特定位置插入刪除

vectora1 ; //一維

vector::iterator k=a1.begin();//下標從0開始

a1.insert(k+1,9); //a1=

a1.erase(k+1); //a1=

**如下(示例):

///獲取長度或者判斷陣列是否為空

vector<

int> a1

;//一維

cout

cout

**如下(示例):

///返回可用總元素

a.capacity(); //返回a在記憶體中總共可以容納的元素個數

///強制調整元素個數以及數值

a.resize(10); //將a的現有元素個數調至10個,多則刪,少則補,其值隨機

a.resize(10,2); //將a的現有元素個數調至10個,多則刪,少則補,其值為2

///將陣列擴容

a.reserve(100); //將a的容量(capacity)擴充至100,也就是說現在測試a.capacity();的時候返回值是100.這種操作只有在需要給a新增大量資料的時候才 顯得有意義,因為這將避免記憶體多次容量擴充操作(當a的容量不足時電腦會自動擴容,當然這必然降低效能)

///將vector陣列a,b的元素進行整體交換

a.swap(b); //b為向量,將a中的元素和b中的元素進行整體**換

**如下(示例):

#include

(1)sort

( a.

begin()

, a.

end())

;//對a中的從a.begin()(包括它)到a.end()(不包括它)的元素進行從小到大排列

(2)reverse

(a.begin()

,a.end()

);//對a中的從a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素為1,3,2,4,倒置後為4,2,3,1

(3)copy

(a.begin()

,a.end()

,b.begin()

+1);

//把a中的從a.begin()(包括它)到a.end()(不包括它)的元素複製到b中,從b.begin()+1的位置(包括它)開始複製,覆蓋掉原有元素

(4)find

(a.begin()

,a.end()

,10);

//在a中的從a.begin()(包括它)到a.end()(不包括它)的元素中查詢10,若存在返回其在向量中的位置

C 標頭檔案之 limits h

c標頭檔案 limits.h 中定義了各種變數型別的屬性。char bit 8定義乙個位元組的位元數。schar min 128 定義乙個有符號字元的最小值。schar max 127定義乙個有符號字元的最大值。uchar max 255定義乙個無符號字元的最大值。char min 0定義型別 ch...

C 標頭檔案與C標頭檔案

include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入 輸出 include 引數化輸入 輸出 include 資料流輸入 輸出 include 定義各種資料型別最值常量 include 定義本地化函式 include ...

C語言標頭檔案之float h

float.h中的符號常量 float.h與limits.h一樣是定義邊界值的,float.h定義的是浮點數的邊界值 double dbl dig double小數點後面精確的位數 dbl epsilon 小的正數,double的0跨度值 dbl mant dig 尾數中的位數 dbl max 最大...