一文弄懂 C vector

2021-10-21 15:32:53 字數 4213 閱讀 2673

c++ 標準模板庫的核心包括以下三個元件:

元件描述

容器(containers)

容器是用來管理某一類物件的集合。c++ 提供了各種不同型別的容器,比如 deque、list、vector、map 等。

演算法(algorithms)

演算法作用於容器。它們提供了執行各種操作的方式,包括對容器內容執行初始化、排序、搜尋和轉換等操作。

迭代器(iterators)

迭代器用於遍歷物件集合的元素。這些集合可能是容器,也可能是容器的子集。

這三個元件都帶有豐富的預定義函式,幫助我們通過簡單的方式處理複雜的任務。

向量(vector)是乙個封裝了動態大小陣列的順序容器(sequence container)。跟任意其它型別容器一樣,它能夠存放各種型別的物件。可以簡單的認為,向量是乙個能夠存放任意型別的動態陣列。

建立vector

#include // vector建構函式用法:

std::vectorfirst; // 建立int型別空vector

std::vectorsecond (4,100); // 建立乙個int型別vector,初始包含4個成員,均為100

std::vectorthird (second.begin(),second.end()); // 遍歷複製second的成員

std::vectorfourth (third); // 複製third

【iterators】

begin() // return iterator to beginning (public member function )

end() // return iterator to end (public member function )

rbegin() // return reverse iterator to reverse beginning (public member function )

rend() // return reverse iterator to reverse end (public member function )

cbegin() // return const_iterator to beginning (public member function )

cend() // return const_iterator to end (public member function )

crbegin() // return const_reverse_iterator to reverse beginning (public member function )

crend() // return const_reverse_iterator to reverse end (public member function )

【capacity】

size() //return size (public member function )

max_size() // return maximum size (public member function )

resize() // change size (public member function )

capacity() // return size of allocated storage capacity (public member function )

empty() // test whether vector is empty (public member function )

reserve() // request a change in capacity (public member function )

shrink_to_fit() // shrink to fit (public member function )

【獲取成員】

operator // access element (public member function )

at() // access element (public member function )

front() // access first element (public member function )

back() // access last element (public member function )

data() // access data (public member function )

【修改vector】

assign() // assign vector content (public member function )

push_back() // add element at the end (public member function )

pop_back() // delete last element (public member function )

insert() // insert elements (public member function )

erase() // erase elements (public member function )

swap() swap content (public member function )

clear() // clear content (public member function )

emplace() // construct and insert element (public member function )

emplace_back() // construct and insert element at the end (public member function )

【allocator】

get_allocator() // get allocator (public member function )
vector的初始化,大小,插入等

#include #include using namespace std;

int main()

// 顯示 vec 擴充套件後的大小

cout << "extended vector size = " << vec.size() << endl;

// 訪問向量中的 5 個值

for(i = 0; i < 5; i++)

// 使用迭代器 iterator 訪問值

vector::iterator v = vec.begin();

while( v != vec.end())

return 0;

}

下標訪問: vec[1]; //並不會檢查是否越界

at方法訪問: vec.at(1); //以上兩者的區別就是at會檢查是否越界,是則丟擲out of range異常

訪問第乙個元素: vec.front();

訪問最後乙個元素: vec.back();

返回乙個指標: int* p = vec.data(); //可行的原因在於vector在記憶體中就是乙個連續儲存的陣列,所以可以返回乙個指標指向這個陣列。這是是c++11的特性。

結合c11語法特性的多種遍歷方式

#include #include using namespace std;

int main(int argc, char* ar**)

; showvec(vallist);

return 0;

}

【遍歷】

void showvec(const vector& vallist)

}

void showvec(const vector& vallist)

}

void showvec(const vector& vallist)

}

void showvec(const vector& vallist)

}

void showvec(const vector& vallist)

}

一文弄懂Hbase基本架構

7 hbase的容錯性 注 一張hbase表在剛剛建立的時候,預設只有乙個region。所以多有關於這張表的請求都被路由到同乙個region server,不管集群中有多少region server。這也就是為什麼hbase表在剛剛建立的階段不能充分利用整個集群的吞吐量的原因。如果想開始就用到集群的...

一文弄懂Nginx最核心的配置

在日常的工作中,跟nginx打交道的時候挺多的。之前對location的匹配規則是一知半解的,為了搞明白location是如何匹配的,查了些資料總結此文。希望能給大家帶來幫助。location uri location name語法規則很簡單,乙個location關鍵字,後面跟著可選的修飾符,後面是...

一文弄懂HTTP請求如何建立TCP連線

摘自詳解tcp連線的 三次握手 與 四次揮手 上 客戶端與伺服器之間資料的傳送和返回的過程當中需要建立tcp連線。由於tcp不存在連線的概念,只存在請求和響應,請求和響應都是資料報,它們之間都是經過由tcp建立的乙個從客戶端發起,伺服器接收的類似連線的通道,這個連線可以一直保持,http請求是在這個...