1. 程式人生 > >STL中Vector容器Find的使用(int查詢)

STL中Vector容器Find的使用(int查詢)

今天又忘了怎麼在vector中查詢某一個值。。唉。。每次都忘。。現在記下來。。(- -!)

stl包括容器、迭代器和演算法:

容器 用於管理一些相關的資料型別。每種容器都有它的優缺點,不同的容器反映出程式設計的不同需求。容器自身可能由陣列或連結串列實現,或者容器中的每個元素都有特殊的關鍵值。

迭代器 用於遍歷一個數據集中的每個元素。這些資料集可能是容器或者容器的子集。迭代器的主要優點是它們為任意型別的容器提供一個小巧並且通用(注意通用很重要)的介面。例如,迭代器介面的一個操作是讓它依次遍歷資料集的每個元素。這個操作是依賴容器的內總部結構獨立完成的。迭代器之所以有效是因為容器類提供它自己的迭代器型別來做“正確的事”,容本身的迭代器瞭解容器的內部結構。

迭代器的介面幾乎相當於普通的指標。讓一個迭代器遞增只需呼叫++操作符。使用*操作符可以得到迭代器引用的資料值。因而迭代器可以被任為是一種智慧指標。

演算法 被用於處理資料集中的元素。例如它們可以搜尋、排序、修改資料或者其他目的。演算法使用迭代器,因此,一個演算法只需被編寫一次就可以用於任意的容器,因為迭代器的介面對所有型別的容器是通用的。這就是find()的位置

為了給演算法更多的擴充套件性,需要提供一些被演算法呼叫的附屬函式。可以使用通用演算法去適應非常特別和複雜的需求。你可以提供自己的搜尋標準或者特殊的操作去繫結元素。

STL的概念是將資料和操作獨立開來。資料由容器類管理,而操作是由可配置的演算法定義。迭代器則是這兩個元素之間的線索。它允許任何演算法和容器的互動。

在某種意義上,STL的概念有勃於面向物件程式設計的初衷:STL將資料和演算法分離而非繫結它們。然而,這樣做的理由非常重要:原則上,你可以將任何容器同任何演算法繫結,得到的結果是STL是非常可擴充套件的。

STL的一個標準是它支援任意資料型別。“標準模板庫”意味著,所有部分是適應任意型別的模板。STL是通用程式設計的例子。容器和演算法對任意型別和類都是通用的。

STL甚至提供更多的通用元件。使用 介面卡 和函式體,你可以為特定需要補充、限制和配置演算法和介面。

一個find Vector的例子(BAIDU裡找的),注意find不屬於vector的成員,而存在於演算法中,應加上標頭檔案#include <algorithm>:

#include <vector>
#include <algorithm>
#include <iostream>

int main( )
{
    using namespace std;

    vector<int> L;
    L.push_back( 1 );
    L.push_back( 2 );
    L.push_back( 3 );
    L.push_back( 4 );
    L.push_back( 5 );
    vector<int>::iterator result = find( L.begin( ), L.end( ), 3 ); //查詢3
    if ( result == L.end( ) ) //沒找到
        cout << "No" << endl;
    else //找到
        cout << "Yes" << endl;

}