[知識點]C++中STL容器之vector

零、STL目錄html

  一、容器之mapnode

  二、容器之vector數組

  三、容器之set函數

 

1、前言spa

  關於STL和STL容器的概念參見STL系列第一篇——map(見上)。今天介紹第二個成員——vector。code

 

2、用途htm

  vector的本質是數組,但更爲靈活,高級。數組在定義時須要肯定範圍,可能存在浪費內存或者越界兩大問題,而能夠動態拓展的vector完美解決了這兩個問題,它至關因而能夠分配拓展的數組。vector支持各類數據類型。blog

 

3、構造與功能排序

一、構造內存

struct node {
    int x;
    char y; 
};

vector <int> a;
vector <string> b;
vector <node> c;

vector <int>::iterator it;

  支持各類數據類型,結構體亦可。迭代器再也不介紹,詳情參見map(見上)。

 

二、功能

  vector實在算是STL容器中最好理解的了,同時有了前面map的鋪墊,函數大可大同小異,大部分都不詳細介紹了,直接給個列表。

 

 

兩個沒有說起的函數單獨拎出來——lower_bound和upper_bound。

首先,其意義與map中說起的一致:lower_bound()返回值 >= 給定元素的第一個位置,upper_bound()返回值 > 給定元素的第一個位置。

而後,這倆函數能被用於:map, vector, set, multiset。map, set沒什麼特別的,而在vector中用法略有不一樣。

在vector中,兩個函數存在三個參數:(首地址,尾地址,值)。因爲sort對vector的完美支持,咱們能夠利用這兩個函數進行快速的區間大小查詢。首先對數組進行快速排序(默認從小到大),而後利用lower_bound函數二分查找第一個大於等於該值的位置。具體運用參見:《[分塊] 數列分塊入門1-9》中的「分塊練習2」。

相關文章
相關標籤/搜索