《我的第一本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;
}

猜你喜欢

转载自blog.csdn.net/sugarbank/article/details/82973986