返回目錄(建議收藏):【目錄】全面理解C++ STL標準模板庫
原理程式碼
template <class T,class Alloc=allocator<T>> class vector;
// generic template
vector概念
vector是表示可以改變大小的陣列的序列容器.
就像陣列一樣,向量為它們的元素使用連續的儲存位置,這意味著它們的元素也可以使用指向其元素的常規指標上的偏移量來存取,並且與在陣列中一樣有效. 但與陣列不同的是,它們的大小可以動態變化,它們的儲存由容器自動處理。
#include<vector>
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.拷貝構造
案例程式碼
結果輸出
//方式一:使用計數器列印vector容器
void my_print2(vector<int>&v)
{
for (unsigned i=0; i<v.size() ; i++)
std::cout << ' ' << v[i];
}
//方式二:迭代器列印vector容器
void my_print(vector<int>&v)
{
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
std::cout<<(*it)<<" ";
}
std::cout<<endl;
}
注:這種方法原理就是使用迭代器,auto在這就是指的是迭代器型別
//方式三:使用auto/typedef/type alias
for (auto i = path.begin(); i != path.end(); i++) {
std::cout << *i << ' ';
}
注:這種方法就是方法三的變形式,同樣是使用迭代器輸出
//方式四:range-base 迴圈
for (auto i : path)
std::cout << i << ' ';
函數功能
:將新內容分配給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的副本
舉例程式碼:
結果輸出
函數功能
:返回對向量中位置n處元素的參照。
舉例程式碼:
結果輸出
函數功能
:返回對向量中最後一個元素的參照。
與成員vector::end不同,它返回一個剛剛經過這個元素的迭代器,這個函數返回一個直接參照。在空容器上呼叫此函數會導致未定義的行為。
舉例程式碼:
結果輸出
函數功能:
返回指向向量中第一個元素的迭代器
例子程式碼
結果輸出
函數功能:
返回指向向量中最後一個元素的迭代器
例子程式碼
結果輸出
函數功能:
返回當前為vector分配的儲存空間的大小,以元素表示。
例子程式碼
函數功能:
返回當前為vector分配的儲存空間的大小,以元素表示。
例子程式碼
結果輸出
:見(6)
函數功能:
返回當前為vector分配的儲存空間的大小,以元素表示。
例子程式碼
結果輸出
:見(6)
函數功能:
調整容器大小,使其包含n 個元素。
例子程式碼
結果輸出
函數功能:
從向量中移除所有元素(被銷燬),留下大小為0的容器。
例子程式碼
結果輸出
函數功能:
在vector的末尾新增一個新元素,在其當前最後一個元素之後。
例子程式碼
:見(10)
結果輸出
見(10)
函數功能:
刪除vector 中的最後一個元素,有效地將容器大小減少一。
函數功能:
通過在指定的插入元件之前新元素擴充套件位置,有效地增加了容器的尺寸由插入元件的數量。
例子程式碼
結果輸出
函數功能:
返回向量是否為空(即其大小是否為0)。
函數功能:
返回當前為vector分配的儲存空間的大小,以元素表示。
例子程式碼
結果輸出
【傳送門】
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
成員型別: