1. 程式人生 > >《我的第一本C++書》 用STL優雅你的程式 2018/10/8

《我的第一本C++書》 用STL優雅你的程式 2018/10/8

STL = 演算法 +容器 + 迭代器

algorithm   container   iterator

容器介面卡(container adaptor)、函式物件(functor)

STL的常用標頭檔案和名字空間

STL常用標頭檔案和名字空間
標頭檔案    名字空間  描述
<deque>   std     雙端佇列容器,它是一個由連續儲存的指向不同元素的指標所組成的陣列
<queue>   std 佇列容器,按照先進先出的規則排列容器中的資料
<stack>  std   堆疊容器,按照後進先出的規則排列容器中的資料
<vector>  std   動態陣列容器,連續儲存的容器中的元素,它是最常用的非關聯容器

<map>

<multimap>

<unordered_map> 

<unordered_multimap> 

 std  

 對映容器:由{鍵,值}對組成的集合,以某種作用於鍵值對上的謂詞排列,其中,map容器中的鍵值對是一一對應的關係,而multimap容器中一個鍵可以對應多個值。

作為對映容器,map和multimap由來已久,其底層由紅黑樹實現,而unordered_map 和nordered_multimap是最新的c++ox標準新新增入STL的對映容器,底層由雜湊表實現。

<set> 

<multiset>  

<unordered_set>   

<unordered_multiset>   

 std   集合容器,由節點組成的紅黑樹,每個節點都包含一個元素,節點之間以某種作用於元素對的謂詞排列,沒有兩個不同的元素能夠擁有相同的次序,其中,unordered_set和unordered_multiset是最新的c++ox標準新新增入STL的對映容器,其底層由雜湊表實現
<algorithm> std   它是所有STL標頭檔案中最大的一個,它是由許多模板函式組成,它們相互獨立構成STL中的通用法,包括:比較、交換、查詢、排列等。
<functional>    std    定義了一些模板類,用以宣告函式物件
<string>    std       字串類
<regex>   std    正則表示式,用於對字串進行處理
<memory> std    其中定義了跟記憶體操作相關的元件,例如智慧指標等
// k.cpp : 定義控制檯應用程式的入口點。
//
 
#include "stdafx.h"
#include <iostream>
//引入STL相關元件的標頭檔案
#include <vector>
#include <algorithm>                 //cout_if
#include <functional>               //bind2and
 
using namespace std;
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
	
	vector<int> vecSalary;
 
	cout<<"請輸入工資資料,0表示輸入結束"<<endl;
 
	int nSalary = 0;
	do 
	{
		cin>>nSalary;
		if (0 == nSalary)
		{
			break;
		}
		vecSalary.push_back(nSalary);
	} while (true);
 
	int nTotal = count_if(vecSalary.begin(),vecSalary.end(),bind2nd( greater<int>(), 1000));
 
	cout<<"工資超過1000的人數為:"<<nTotal<<endl;
 
	return 0;
}