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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vector容器与find算法

發布時間:2025/4/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vector容器与find算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

from: http://blog.csdn.net/huangyimin/article/details/6133650


好多東西學了過段時間就忘,忘了再搜索再學。也許人一生忘記是硬道理,學習也是硬道理吧!見到下面的短文很好,便引用到此,以備后忘!!!


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;

}


總結

以上是生活随笔為你收集整理的vector容器与find算法的全部內容,希望文章能夠幫你解決所遇到的問題。

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