《我的第一本c++书》学习笔记:STL常用头文件和名字空间
2013-08-01 15:07
316 查看
头文件 名字空间 描述
<deque> std 双端队列容器,它是一个由连续存储的指向不同元素的指针所组成的数组
<queue> std 队列容器,按照先进先出的规则排列容器中的数据
<stack> std 堆栈容器,按照后进先出的规则排列容器中的数据
<vector> std 动态数组容器,连续存储的容器中的元素,它是最常用的非关联容器
<map> 映射容器,由{键,值}对组成的集合,以某种作用于键值对上的谓词排列,
<multimap> std 其中,map容器中的键值对是一一对应的关系,而multimap容器中一个键可以
<unordered_map> 对应多个值。作为映射容器,map和multimap由来已久,其底层由红黑树实现,而unordered_map
<unordered_multimap> 和unordered_multimap是最新的c++ox标准新添加入STL的映射容器,底层由哈希表实现。
<set> 集合容器,由节点组成的红黑树,每个节点都包含一个元素,节点之间以某种作用于元素对的谓词排列
<multiset> std 没有两个不同的元素能够拥有相同的次序,其中,unordered_set和unordered_multiset
<unordered_set> 是最新的c++ox标准新添加入STL的映射容器,
<unordered_multiset> 其底层由哈希表实现
<algorithm> std 它是所有STL头文件中最大的一个,它是由许多模板函数组成,它们相互独立构成STL中的通用法,
包括:比较、交换、查找、排列等。
<functional> std 定义了一些模板类,用以声明函数对象
<string> std 字符串类
<regex> std 正则表达式,用于对字符串进行处理
<memory> std 其中定义了跟内存操作相关的组件,例如智能指针等
例子代码如下:
解释下bind2nd:
bind1st(const Operation& op, const T& x)就是这么一个操作:x op value
bind2nd(const Operation& op, const T& x)就是这么一个操作:value op x,其中value是被应用bind的对象。
这里要注意下:
bind1st和bind2nd可以绑定二元函数对象的某一个值。值得注意的是:bind1st和bind2nd不是函数对象,它们是普通的函数,它们的输入参数中,第一个参数是二元函数对象,第二个参数是要绑定的值(对于bind1st是绑定二元函数参数的第一个参数,对于bind2nd是绑定二元函数参数的第二个参数。
如果bind2nd(mem_fun_ref(&Student::isnamed), strFindName),而isnamed中有一个参数,则综合起来是2个参数,所以用到bind2nd;
如果bind1st(mem_fun_ref(&Student::isnamed), strFindName),而isnamed没有参数,则综合起来为1个参数。
<deque> std 双端队列容器,它是一个由连续存储的指向不同元素的指针所组成的数组
<queue> std 队列容器,按照先进先出的规则排列容器中的数据
<stack> std 堆栈容器,按照后进先出的规则排列容器中的数据
<vector> std 动态数组容器,连续存储的容器中的元素,它是最常用的非关联容器
<map> 映射容器,由{键,值}对组成的集合,以某种作用于键值对上的谓词排列,
<multimap> std 其中,map容器中的键值对是一一对应的关系,而multimap容器中一个键可以
<unordered_map> 对应多个值。作为映射容器,map和multimap由来已久,其底层由红黑树实现,而unordered_map
<unordered_multimap> 和unordered_multimap是最新的c++ox标准新添加入STL的映射容器,底层由哈希表实现。
<set> 集合容器,由节点组成的红黑树,每个节点都包含一个元素,节点之间以某种作用于元素对的谓词排列
<multiset> std 没有两个不同的元素能够拥有相同的次序,其中,unordered_set和unordered_multiset
<unordered_set> 是最新的c++ox标准新添加入STL的映射容器,
<unordered_multiset> 其底层由哈希表实现
<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; }
解释下bind2nd:
bind1st(const Operation& op, const T& x)就是这么一个操作:x op value
bind2nd(const Operation& op, const T& x)就是这么一个操作:value op x,其中value是被应用bind的对象。
这里要注意下:
bind1st和bind2nd可以绑定二元函数对象的某一个值。值得注意的是:bind1st和bind2nd不是函数对象,它们是普通的函数,它们的输入参数中,第一个参数是二元函数对象,第二个参数是要绑定的值(对于bind1st是绑定二元函数参数的第一个参数,对于bind2nd是绑定二元函数参数的第二个参数。
如果bind2nd(mem_fun_ref(&Student::isnamed), strFindName),而isnamed中有一个参数,则综合起来是2个参数,所以用到bind2nd;
如果bind1st(mem_fun_ref(&Student::isnamed), strFindName),而isnamed没有参数,则综合起来为1个参数。
相关文章推荐
- 《我的第一本c++书》学习笔记:STL之vector容器的常用操作函数
- linux和STL 常用头文件及说明
- 《Oracle编程艺术》学习笔记(9)-Oracle中的文件-数据文件和存储体系(表空间/段/区段/块)
- c++笔记之异常处理、名字空间、文件输入输出流
- 《Java编程思想》学习笔记10——文件和目录常用操作
- 几个常用普通文件上传空间
- ubuntu文件管理常用命令 分类: linux ubuntu 学习笔记 2015-07-02 16:57 29人阅读 评论(0) 收藏
- linux和STL 常用头文件及说明
- 创建ROS工作空间、文件系统及常用命令
- 《Java编程思想》学习笔记10——文件和目录常用操作
- 《我的第一本c++书》学习笔记:STL中的一些通用算法(三)
- 《我的第一本c++书》学习笔记:STL之Lambda表达式
- 假设一个网站系统存在两个配置文件web.config和config.config,那么我如何读取config.config的配置节呢?System.Configuration名字空间下的接口好象只能读
- linux和STL 常用头文件及说明
- linux和STL 常用头文件及说明
- Jabberd/XMPP 学习之五:常用名字空间
- 《我的第一本c++书》学习笔记:STL的一个简单例子
- oracle 常用数据库表空间数据文件SQL
- linux和STL 常用头文件及说明
- 《我的第一本c++书》学习笔记:STL之函数的相关内容(一)