std::vector
回傳目錄(建議收藏):【目錄】全面理解C++ STL標準模板庫
原理代碼
template <class T,class Alloc=allocator<T>> class vector;
// generic template
vector概念
vector是表示可以改變大小的陣列的序列容器.
就像陣列一樣,向量為它們的元素使用連續的存盤位置,這意味著它們的元素也可以使用指向其元素的常規指標上的偏移量來訪問,并且與在陣列中一樣有效. 但與陣列不同的是,它們的大小可以動態變化,它們的存盤由容器自動處理,

深度決議C++ STL vector 目錄
- std::vector
- 0.頭檔案
- 1.定義vector的方式
- (1)常見定義方式
- (2)案例分析
- 2.vector輸出函式
- (1)使用計數器列印vector容器
- (2)通過迭代器輸出
- (3)使用auto/typedef/type alias
- (4)使用range-base
- 3.vector的成員函式
- (1)vector::assign
- (2)vector::at
- (3)vector::back
- (4)vector::begin
- (5)vector::end
- (6)vector::capacity
- (6)vector::size
- (8)vector::max_size
- (9)vector::resize
- (10)vector::clear
- (11)vector::push_back
- (12)vector::pop_back
- (13)vector::insert
- (14)vector::empty
- (15)vector::swap
- (16)其他函式
- 附錄
0.頭檔案
#include<vector>
1.定義vector的方式
(1)常見定義方式
std::vector<int> vitem1{1,2,3,4}; //1.直接賦值
int a[5] = {1,3,6,8,4};
std::vector<int> vitem2(a,a+5); //2.陣列賦值
std::vector<int> vitem3; //3.vector容器的默認構造
for(int i=0;i<50;i+=5){vitem3.push_back(i);} //方法一
vitem3.assign(10,66); //方法二
std::vector<int> vitem4(vitem4.begin(),vitem4.end()); //4.區間進行構造
std::vector<int> vitem5(5,6); //5.n個elem進行構造
std::vector<int> vitem6(vitem5); //6.拷貝構造
(2)案例分析
案例代碼

結果輸出

2.vector輸出函式
(1)使用計數器列印vector容器
//方式一:使用計數器列印vector容器
void my_print2(vector<int>&v)
{
for (unsigned i=0; i<v.size() ; i++)
std::cout << ' ' << v[i];
}
(2)通過迭代器輸出
//方式二:迭代器列印vector容器
void my_print(vector<int>&v)
{
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
std::cout<<(*it)<<" ";
}
std::cout<<endl;
}
(3)使用auto/typedef/type alias
注:這種方法原理就是使用迭代器,auto在這就是指的是迭代器型別
//方式三:使用auto/typedef/type alias
for (auto i = path.begin(); i != path.end(); i++) {
std::cout << *i << ' ';
}
(4)使用range-base
注:這種方法就是方法三的變形式,同樣是使用迭代器輸出
//方式四:range-base 回圈
for (auto i : path)
std::cout << i << ' ';
3.vector的成員函式
(1)vector::assign
函式功能:將新內容分配給vector,替換其當前內容,并相應地修改其大小,
template <class InputIterator>
(1)void assign (InputIterator first, InputIterator last);//新內容是由first和last之間范圍內的每個元素按相同順序構造的元素,
(2)void assign (size_type n, const value_type& val);//新內容是n 個元素,每個元素都初始化為val的副本
舉例代碼:

結果輸出

(2)vector::at
函式功能:回傳對向量中位置n處元素的參考,
舉例代碼:

結果輸出

(3)vector::back
函式功能:回傳對向量中最后一個元素的參考,
與成員vector::end不同,它回傳一個剛剛經過這個元素的迭代器,這個函式回傳一個直接參考,在空容器上調用此函式會導致未定義的行為,
舉例代碼:

結果輸出

(4)vector::begin
函式功能:回傳指向向量中第一個元素的迭代器
例子代碼

結果輸出

(5)vector::end
函式功能:回傳指向向量中最后一個元素的迭代器
例子代碼
結果輸出
(6)vector::capacity
函式功能:回傳當前為vector分配的存盤空間的大小,以元素表示,
例子代碼


(6)vector::size
函式功能:回傳當前為vector分配的存盤空間的大小,以元素表示,
例子代碼
結果輸出:見(6)
(8)vector::max_size
函式功能:回傳當前為vector分配的存盤空間的大小,以元素表示,
例子代碼
結果輸出:見(6)
(9)vector::resize
函式功能:調整容器大小,使其包含n 個元素,
例子代碼
結果輸出

(10)vector::clear
函式功能:從向量中移除所有元素(被銷毀),留下大小為0的容器,
例子代碼
結果輸出
(11)vector::push_back
函式功能:在vector的末尾添加一個新元素,在其當前最后一個元素之后,
例子代碼:見(10)
結果輸出見(10)
(12)vector::pop_back
函式功能:洗掉vector 中的最后一個元素,有效地將容器大小減少一,
(13)vector::insert
函式功能:通過在指定的插入元件之前新元素擴展位置,有效地增加了容器的尺寸由插入元件的數量,
例子代碼
結果輸出
(14)vector::empty
函式功能:回傳向量是否為空(即其大小是否為0),
(15)vector::swap
函式功能:回傳當前為vector分配的存盤空間的大小,以元素表示,
例子代碼
結果輸出
(16)其他函式
【傳送門】
vector::cbegin
vector::cend
vector::crbegin
vector::crend
vector::data
vector::emplace
vector::emplace_back、
vector::front
vector::get_allocator
vector::operator=
vector::reserve
vector::shrink_to_fit
vector::rend
vector::rbegin
vector::operator[]
vector::erase
附錄
成員型別:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/400429.html
標籤:其他
上一篇:Web安全第 06 講:密碼爆破工具hydra(kali)
下一篇:Linux相關內容(三)
