C++基本序列式容器 vector (一)
我們以 vector、deque 和 list 為例介紹基本序列式容器,先來看一個關于 vector 容器的例子。
#include <iostream> #include <vector> using namespace std; int main() {vector< int > num;num.push_back( 50 );num.insert(num.begin(), 10);num.insert(num.end(), 20);num.push_back( 60 );num.push_back( 40 );cout << num.size() << endl;for(int i = 0; i < num.size(); i++)cout << num[i] << " ";cout << endl;num.erase(num.begin());cout << num.size() << endl;for(int i = 0; i < num.size(); i++)cout<< num[i] <<" ";cout << endl;return 0; }vector 可以理解為可以在兩端插入、刪除數據的數組,它提供了豐富的成員函數,用于操作數據。在使用 vector 時,必須包含頭文件。
我們接著來看一下主函數。我們定義了一個 vector 類的 int 型實例 num,需要注意的是我們并沒有指定實例的大小,因為 vector 是可以根據需求自動調整大小的,這一點跟數組不同。接下來我們調用函數 push_back(),該函數時在 vector 實例 num 的最后添加一個元素,因為一開始定義的時候為空,因此此時的 num 中只包含一個元素 50。
之后我們再調用 insert() 函數,該函數可以在指定位置插入元素。在 insert() 函數參數中,我們分別調用了 begin() 和 end() 函數,這兩個函數分別用來訪問 num 實例的頭部和尾部:
begin() 函數返回的是一個迭代器,如果容器不為空,則返回的迭代器指向容器的第一個元素;如果容器為空,則返回的迭代器指向容器尾部之后的位置。
end() 函數同樣返回的是一個迭代器,該迭代器指向的是容器尾部之后的位置。
當容器為空時,begin() 函數和 end() 函數都指向同一個位置,當容器有一個元素的時候,begin() 函數指向第一個元素的位置,end() 函數則指向第一個元素之后的位置。
調用 insert() 函數時,如果不是在容器尾部插入元素,則需要將所插入位置以后的元素都向后移一位,然后再將需要插入的元素插入到當前位置。例如,我們要在開頭插入一個元素,則需要將容器現有的元素都向后移動一個位置,然后再將元素插入到第一個位置,因此 vector 在非尾部位置插入元素的效率不高。
在主函數中調用兩次 insert() 函數之后,此時 num 容器中的元素有:10,50,20。之后又調用了兩個 push_back() 函數,在容器尾部插入了兩次數據,容器中的數據按順序依次為:10,50,20,60,40。之后調用 size() 函數,返回容器的大小,因為此時容器中包含五個元素,因此返回值為 5。接下來我們將容器中的元素一一打印出來,我們可以通過下標操作符訪問容器中的元素,打印結果為:10,50,20,60,40。
接下來調用 erase() 函數刪除容器中的元素,刪除位置是容器第一個元素,刪除之后,該位置就會空出,此時后面的元素需要全部向前移動一個位置。此時容器中的元素按順序一次為:50,20,60,40。
總結
以上是生活随笔為你收集整理的C++基本序列式容器 vector (一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++标准模板库(STL)的概念
- 下一篇: C++标准输出流对象