STL學習系列之一 標準模板庫STL介紹

2021-09-30 12:27:19 字數 2393 閱讀 8259

stl的最大特點就是:

資料結構和演算法的分離,非物件導向本質。訪問物件是通過象指標一樣的迭代器實現的;

容器是象鍊錶,向量之類的資料結構,並按模板方式提供;

演算法是函式模板,用於操作容器中的資料。由於stl以模板為基礎,所以能用於任何資料型別和結構。

容器可以分為三種主要型別:序列容器、關聯容器、容器介面卡。

每種stl容器都具有相關聯的成員函式,這些成員函式的乙個子集在所有的stl容器中都定義了。

stl迭代器的屬性和指標類似,程式可以利用迭代器操作stl容器中的元素

stl演算法是用於執行常見資料操作的函式,這些操作包括搜尋、排序和比較元素,stl提供了大約70種演算法,其中大多數演算法都使用迭代器來訪問容器元素。

1.1 容器簡介

容器可以分為三種:序列容器、關聯容器、容器介面卡。

序列容器:vector deque list

vector:可從後端執行快速的插入和刪除,直接訪問任何元素

deque:從前面或後面執行快速的插入和刪除,直接訪問任何元素

list:雙鏈表,能在任何地方執行快速的插入和刪除

關聯容器:set multiset map multimap

set:執行快速搜尋,元素不允許重複

multiset:執行快速搜尋,元素允許重複

map:一對一對映,元素不允許重複,快速的基於鍵的搜尋

multimap:一對多對映,元素允許重複,快速的基於鍵的搜尋

容器介面卡:stack queue priority_queue

stack:後進先出

queue:先進先出

priority_queue:優先順序最高的元素總是最先出隊

序列容器表示線性資料結構,例如向量和鍊錶;

關聯容器是非線性容器,通常能夠快速找出儲存在容器中的元素。這類容器能夠儲存值的集合或鍵/值對;序列容器和關聯容器統稱為第一類容器。

stl將堆疊和佇列實現為容器介面卡,使程式以一種受約束的方式看待序列容器。

stl通常可通過模板實現泛型程式設計,以避免繼承和虛函式,獲得更好的執行時效能。

1.2 迭代器簡介

迭代器在許多方面和指標相同,用於指向第一類容器的元素。

迭代器提供對乙個容器中的物件的訪問方法,並且定義了容器中物件的範圍。迭代器就如同乙個指標。事實上,c++的指標也是一種迭代器。但是,迭代器不僅僅是指標,因此你不能認為他們一定具有位址值。例如,乙個陣列索引,也可以認為是一種迭代器。

迭代器有各種不同的建立方法。程式可能把迭代器作為乙個變數建立。乙個stl容器類可能為了使用乙個特定型別的資料而建立乙個迭代器。作為指標,必須能夠使用*操作符類獲取資料。你還可以使用其他數學操作符如++。典型的,++操作符用來遞增迭代器,以訪問容器中的下乙個物件。如果迭代器到達了容器中的最後乙個元素的後面,則迭代器變成past-the-end值。使用乙個past-the-end值得指標來訪問物件是非法的,就好像使用null或為初始化的指標一樣。

廢話不多說,直接上demo

//利用istream_iterator進行輸入,利用ostream_iterator進行輸出

//下面程式演示了使用istream_iterator從標準輸入進行輸入,以及使用ostream_iterator輸出到標準輸出

#include "stdafx.h"

#include using namespace std;

#include int _tmain(int argc, _tchar* ar**)

{ cout<<"輸入2個整數:"//下行對迭代器inputint解除引用,並從cin中讀出乙個整數,然後將它賦予number1

int number1=*inputint;

++inputint; //將迭代器inputint定位到輸出流中的下乙個值

int number2=*inputint; //從inputint輸入下乙個整數,並將它賦予number2

//下行建立了乙個ostream_iterator,它能夠在標準輸出物件cout**入int值

std::ostream_iteratoroutputint(cout);

cout<<"和是:"<1.3 演算法簡介

stl演算法能用於各種容器。stl提供的許多演算法,大量用於操作容器,插入、刪除、搜尋、排序以及其他演算法,都適合於部分或者所有的stl容器。

stl的實現非常簡單。到目前為止,類的設計者都將演算法作為容器的成員函式,使演算法和容器相關聯。stl採用不同的方法,stl的演算法和容器是分離的,它只是間接地通過迭代器操作容器的元素。

stl演算法能夠用於stl容器以及基於指標的、c風格的陣列。

STL學習系列之一 標準模板庫STL介紹

庫是一系列程式元件的集合,他們可以在不同的程式中重複使用。c 語言按照傳統的習慣,提供了由各種各樣的函式組成的庫,用於完成諸如輸入 輸出 數學計算等功能。1.stl介紹 標準模板庫stl是當今每個從事c 程式設計的人需要掌握的技術,所有很有必要總結下 本文將介紹stl並 它的三個主要概念 容器 迭代...

學習標準模板庫STL

標準模板庫 stl,即standard template library 是乙個c 軟體庫。stl常見頭件包括algorithm,functional iterator vector list deque queue stack等。在學習過程中與其他常見庫對比,如mfc,wxwidgets,itk,...

STL標準模板庫學習 前言

題目 學完之後給出答案。某學校舉行一場唱歌比賽,共有24人參加,按參加順序設定參賽號 參賽號為100至123 每個選手唱完一首歌之後,由10個評委分別打分。改選手的最終得分是去掉乙個最高分和乙個最低分,求得剩下的8個評分的平均分。比賽共3輪,前兩輪為淘汰賽,第三輪為決賽。選手的名次按得分降序排列,若...