日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++基本序列式容器 vector (一)

發布時間:2025/4/5 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 (一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。