当前位置: 首页 > 编程日记 > 正文

C++标准库简介(转)

C++标准库的所有头文件都没有扩展名。C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能。 <cname>形式的标准头文件【 <complex>例外】其内容与ISO标准C包含的name.h头文件相同,但容纳了C++扩展的功能。在 <cname>形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明。在C++中还可以使用name.h 形式的标准C库头文件名。

C++标准库的内容分为10类:

C1.语言支持 C2.输入/输出 C3.诊断 C4.一般工具 C5.字符串

C6.容器 C7.迭代器支持 C8.算法 C9.数值操作 C10.本地化


C1 标准库中与语言支持功能相关的头文件 头文件

描述 
<cstddef> 定义宏NULL和offsetof,以及其他标准类型size_t和ptrdiff_t。与对应的标准C头文件的区别是,NULL是C++空指针常量的补 充定义,宏offsetof接受结构或者联合类型参数,只要他们没有成员指针类型的非静态成员即可。
<limits> 提供与基本数据类型相关的定义。例如,对于每个数值数据类型,它定义了可以表示出来的最大值和最小值以及二进制数字的位数。
<climits> 提供与基本整数数据类型相关的C样式定义。这些信息的C++样式定义在 <limits>中
<cfloat> 提供与基本浮点型数据类型相关的C样式定义。这些信息的C++样式定义在 <limits>中
<cstdlib> 提供支持程序启动和终止的宏和函数。这个头文件还声明了许多其他杂项函数,例如搜索和排序函数,从字符串转换为数值等函数。它与对应的标准C头文件 stdlib.h不同,定义了abort(void)。abort()函数还有额外的功能,它不为静态或自动对象调用析构函数,也不调用传给 atexit()函数的函数。它还定义了exit()函数的额外功能,可以释放静态对象,以注册的逆序调用用atexit()注册的函数。清除并关闭所有 打开的C流,把控制权返回给主机环境。
<new> 支持动态内存分配
<typeinfo> 支持变量在运行期间的类型标识
<exception> 支持异常处理,这是处理程序中可能发生的错误的一种方式
<cstdarg> 支持接受数量可变的参数的函数。即在调用函数时,可以给函数传送数量不等的数据项。它定义了宏va_arg、va_end、va_start以及va_list类型
<csetjmp> 为C样式的非本地跳跃提供函数。这些函数在C++中不常用
<csignal> 为中断处理提供C样式支持

C2 支持流输入/输出的头文件 头文件  描述 
< iostream> 支持标准流cin、cout、cerr和clog的输入和输出,它还支持多字节字符标准流wcin、wcout、wcerr和wclog。
<iomanip> 提供操纵程序,允许改变流的状态,从而改变输出的格式。
<ios> 定义iostream的基类
<istream> 为管理输出流缓存区的输入定义模板类
<ostream> 为管理输出流缓存区的输出定义模板类
<sstream> 支持字符串的流输入输出
<fstream> 支持文件的流输入输出
<iosfwd> 为输入输出对象提供向前的声明
<streambuf> 支持流输入和输出的缓存
<cstdio> 为标准流提供C样式的输入和输出
<cwchar> 支持多字节字符的C样式输入输出

C3 与诊断功能相关的头文件 头文件 描述
<stdexcept> 定义标准异常。异常是处理错误的方式
<cassert> 定义断言宏,用于检查运行期间的情形
<cerrno> 支持C样式的错误信息

C4 定义工具函数的头文件 头文件 描述
<utility> 定义重载的关系运算符,简化关系运算符的写入,它还定义了pair类型,该类型是一种模板类型,可以存储一对值。这些功能在库的其他地方使用
<functional> 定义了许多函数对象类型和支持函数对象的功能,函数对象是支持operator()()函数调用运算符的任意对象
<memory> 给容器、管理内存的函数和auto_ptr模板类定义标准内存分配器
<ctime> 支持系统时钟函数

C5 支持字符串处理的头文件 头文件 描述
<string> 为字符串类型提供支持和定义,包括单字节字符串(由char组成)的string和多字节字符串(由wchar_t组成)
<cctype> 单字节字符类别
<cwctype> 多字节字符类别
<cstring> 为处理非空字节序列和内存块提供函数。这不同于对应的标准C库头文件,几个C样式字符串的一般C库函数被返回值为const和非const的函数对替代了
<cwchar> 为处理、执行I/O和转换多字节字符序列提供函数,这不同于对应的标准C库头文件,几个多字节C样式字符串操作的一般C库函数被返回值为const和非const的函数对替代了。
<cstdlib> 为把单字节字符串转换为数值、在多字节字符和多字节字符串之间转换提供函数

C6 定义容器类的模板的头文件 头文件 描述
<vector> 定义vector序列模板,这是一个大小可以重新设置的数组类型,比普通数组更安全、更灵活
<list> 定义list序列模板,这是一个序列的链表,常常在任意位置插入和删除元素
<deque> 定义deque序列模板,支持在开始和结尾的高效插入和删除操作
<queue> 为队列(先进先出)数据结构定义序列适配器queue和priority_queue
<stack> 为堆栈(后进先出)数据结构定义序列适配器stack
<map> map是一个关联容器类型,允许根据键值是唯一的,且按照升序存储。multimap类似于map,但键不是唯一的。
<set> set是一个关联容器类型,用于以升序方式存储唯一值。multiset类似于set,但是值不必是唯一的。
<bitset> 为固定长度的位序列定义bitset模板,它可以看作固定长度的紧凑型bool数组

C7 支持迭代器的头文件 头文件 描述
<iterator> 给迭代器提供定义和支持

C8 有关算法的头文件 头文件 描述
<algorithm> 提供一组基于算法的函数,包括置换、排序、合并和搜索
<cstdlib> 声明C标准库函数bsearch()和qsort(),进行搜索和排序
<ciso646> 允许在代码中使用and代替&&

C9 有关数值操作的头文件 头文件 描述
<complex> 支持复杂数值的定义和操作
<valarray> 支持数值矢量的操作
<numeric> 在数值序列上定义一组一般数学操作,例如accumulate和inner_product
<cmath> 这是C数学库,其中还附加了重载函数,以支持C++约定
<cstdlib> 提供的函数可以提取整数的绝对值,对整数进行取余数操作

C10 有关本地化的头文件 头文件 描述
<locale> 提供的本地化包括字符类别、排序序列以及货币和日期表示。
<clocale> 对本地化提供C样式支持

转载于:https://www.cnblogs.com/jjxboy/archive/2011/11/01/2231548.html

相关文章:

【jquery】$.each的使用方法

代码实现&#xff1a; $.each(goodsArray, function(index){if(goods.barCode goodsArray[index].barCode){goodsArray[index].count;boo true;return; }});

MyEclipse插件安装

一、安装方法&#xff1a; 方法一、如果可以上网可在线安装 1. 打开Myeclipse&#xff0c;在菜单栏中选择Help→Software Updates→Find and Install; 2. 选择Search for new features to install&#xff0c;点击Next进入下一步; 3. 点击"New Remote Site"按钮&…

软件质量与测试 第4周小组作业

一、项目地址 https://github.com/changjiang666/WcPro 二、PSP 三、设计思路 我负责main函数的编写和print输出模块的编写。 1.main函数 int main(/*int argc, char **argv*/) {char *textBuf readfile("test.txt"); // 读取输入文件WcPro wcpro(textBuf);// 将输入…

UVA 10714 - Ants

这道题是要我们找出所有蚂蚁中最靠近端点和最靠近中间的蚂蚁所在的位置&#xff0c;计算端点的蚂蚁爬到另一个 端点的时间和计算靠近中间的蚂蚁爬到离他近的端点的时间。我们只需分输入的位置在棒的左边还是右边 来讨论就行。 #include<iostream>using namespace std;int…

Mysql Cluster 集群 windows版本

VM1&#xff1a;192.168.220.102 管理节点(MGM) VM2&#xff1a;192.168.220.103 数据节点(NDBD1)&#xff0c;SQL节点(SQL1) VM3&#xff1a;192.168.220.104 数据节点(NDBD2)&#xff0c;SQL节点(SQL2) MySQL Cluster版本&#xff1a;7.4.6 (MSI Installer) 下载地址&…

【js】通过js代码改变html表单中的数据

代码实现&#xff1a; document.getElementById("sum").innerHTML sum;

Asp.net MVC 3实例学习之ExtShop(五)——产品详细页

在产品详细页需要使用到tab控件&#xff0c;在jquery的ui包已包含改控件&#xff0c;因而将相应文件链接加到母版页就可以了。 打开“ProductController”文件&#xff0c;在里面添加一个Details操作&#xff0c;代码如下&#xff1a; 1 public ActionResu…

linux安装配置postgres及使用dblink

好久不写东西&#xff0c;一直在看些开源的东西&#xff0c;下面贴下linux上安装配置postgres及使用dblink的操作参考&#xff0c;以供读者和自己今后参考&#xff1a; 1、下载源码&#xff1a;postgresql-9.3.2.tar.gz 2、创建postgres cluster组和用户&#xff1a; groupadd …

从瀑布模型、极限编程到敏捷开发

从瀑布模型、极限编程到敏捷开发---软件开发管理者思维的变化Jack zhai软件开发是一种对人类智慧的管理&#xff0c;对人大脑思维的“工厂化”管理。人是有感情的、有情绪的、变化的、相对独立的工作单元&#xff0c;这与冰冷的机器是不可比的&#xff0c;所以在中国的历史上&a…

递归和循环:跳台阶和变态跳台阶和矩形覆盖

题目描述 跳台阶:一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法&#xff08;先后次序不同算不同的结果&#xff09;。变态跳台阶:一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上…

【js】将json类型的数组或对象转为字符串

代码实现&#xff1a; JSON.stringify(goodsList); 注&#xff1a;该用法多用于数据的传输&#xff0c;如页面于servlet的数据传输不能使用gson的数组直接传输&#xff0c;使用该方法便可解决问题。

Android XML pull 解析器

Android 并未提供对 Java StAX API 的支持。但是&#xff0c;Android 确实附带了一个 pull 解析器&#xff0c;其工作方式类似于 StAX。它允许您的应用程序代码从解析器中获取事件&#xff0c;这与 SAX 解析器自动将事件推入处理程序相反。清单 10 显示了提要解析接口的一个 pu…

Zepto.js库touch模块代码解析

Zepto.js也许并不陌生&#xff0c;专门针对移动端开发&#xff0c;Zepto有一些基本的触摸事件可以用来做触摸屏交互&#xff08;tap事件、swipe事件&#xff09;&#xff0c;Zepto是不支持IE浏览器的。 下面来解析一些Zepto.js触摸事件的解析&#xff1a; 1.触摸事件离不开:tou…

PHP 常用字符串处理代码片段

移除 HTML 标签 $text strip_tags($input, ""); 返回 $start 和 $end 之间的文本function GetBetween($content,$start,$end){ $r explode($start, $content); if (isset($r[1])){ $r explode($end, $r[1]); return $r[0]; } ret…

【maven】初识maven

一&#xff1a;maven的配置&#xff1a; 集成到eclipse步骤&#xff1a; 1、下载maven&#xff0c;放到软件安装目录&#xff0c;打开目录&#xff1a;MAVEN_HOME/conf/ 2、修改文件setting.xml&#xff1a;仓库配置目录&#xff1a;<localRepository>D:\DATA\lo…

[C++再学习系列] 函数模板和类模板

函数模板和类模板 C 提供类模板和函数模板。函数模板允许重载 &#xff0c;而类模板不允许重载(类无重载概念)。类模板可以进行全特化和偏特化&#xff0c;而函数模板仅能够全特化 。因此&#xff0c;写一个看似函数模板偏特化的函数模板实际上是在写一个单独的主函数模板&…

git init 与 git init --bare 区别

git init 与 git init --bare 区别 发现问题 最早是在公司的wiki上发现了这个命令&#xff0c;google后发现值得记录下来 实践中发现的区别 网上找了很多资料&#xff0c;但说的很乱&#xff0c;干脆在自己的服务器上执行对比了一下&#xff1a;git init demo1 # 表示创建一个…

一个虚函数和虚继承的问题。

这个问题困惑好几天了。废话不多说&#xff0c;先上代码。 1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 virtual void aa() 8 { 9 } 10 private: 11 char k[3]; 12 }; 13 14 class B:publi…

Linux性能分析命令工具汇总

转自&#xff1a;http://rdc.hundsun.com/portal/article/731.html?refmyread出于对Linux操作系统的兴趣&#xff0c;以及对底层知识的强烈欲望&#xff0c;因此整理了这篇文章。本文也可以作为检验基础知识的指标&#xff0c;另外文章涵盖了一个系统的方方面面。如果没有完善…

【jsp】使用get方法传值的格式

get:通过地址提交 格式&#xff1a; http://192.168.7.45:7002/jsp29/doAddStu.jsp?stuNo20181013123&stuName%E5%B0%8F%E5%BC%BA&gender0&age19&major%E7%94%B5%E5%AD%90%E5%B7%A5%E7%A8%8B&score650 即&#xff1a;网址?参数名值&参数名值

指针02 - 零基础入门学习C语言42

第八章&#xff1a;指针02 让编程改变世界 Change the world by program 对“&”和“*”运算符再做些说明 如果已执行了语句 pointer_1 &a; (1) &*pointer_1的含义是什么&#xff1f; “&”和“*”两个运算符的优先级别相同&#xff0c;但按自右而左方向结…

java算法----排序----(6)希尔排序(最小增量排序)

1 package log;2 3 public class Test4 {4 5 /**6 * java算法---希尔排序&#xff08;最小增量排序&#xff09;7 * 8 * param args9 */ 10 public static void main(String[] args) { 11 // 需要排序的数组 12 int arr[] { 49, …

你知道dos和cmd之间的关系以及区别吗?

含义 dos 英文disk operation system&#xff0c;意思是磁盘操作系统是微软系列操作系统之一&#xff0c;dos是一个独立的操作系统&#xff0c;dos对操作人员的要求是比较高的&#xff0c;操作者需要记住很多的命令&#xff0c;并利用命令编写大量的命令行&#xff0c;来完成一…

挨踢项目求生法则-团队建设篇

摘要&#xff1a; 知道什么是挨踢项目吧&#xff1f;什么&#xff01;不知道&#xff1f;那IT项目知道了吧&#xff1f;为了不让客户踢、不让老板踢、项目组成员之间不互相踢&#xff0c;俺为大家分享一些减少被踢机会的心得体会。就算不能让项目成功&#xff0c;也至少不会死得…

【jquery】文档操作

属性 1、attr() 获取、设置属性、设置多个属性 代码实现&#xff1a; alert($("div:first").attr("value")); $("div:first").attr("value","这是第一个div"); $("div:last").attr({value: "这是最后一…

基于流式的md5计算-多线程下载工具Lwget介绍

在数据传输的时候&#xff0c;我们希望实现以下目标&#xff1a;1. 使用多线程传输&#xff0c;加速下载速度2. 数据在传输过程中,进行流式md5计算&#xff0c;避免在传输完毕之后校验大文件3. 支持断点续传4. 支持http协议和ftp协议5. 代码尽可能的简单&#xff0c;利于维护 实…

SpringCloud系列一:SpringCloud的简介和架构

声明&#xff1a;本文来源于MLDN培训视频的课堂笔记&#xff0c;写在这里只是为了方便查阅。 一、SpringCloud简介 SpringCloud就是一套分布式服务治理的框架&#xff0c;既然它是一套服务治理的框架&#xff0c;那么它本身不会提供具体功能性的操作&#xff0c;更专注于服务之…

SUST_ACM_2019届暑期ACM集训热身赛题解

问题A:Hello SUST! 知识点&#xff1a;基本输入输出 C/C&#xff1a; 1 #include <stdio.h>2 3 int main() {4 int n;5 scanf("%d", &n);6 while(n --) {7 printf("Hello SUST!\n");8 }9 return 0; 10 } View Code问…

修改默认的个人站点

1、将模板页加入到里面 在地址C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES\MySiteLayouts中找到 LayoutFiles.xml 然后将master复制到这个文件夹下 最后在LayoutFiles.xml加入如下代码&#xff1a; <Module Name"Mast…

【java】暑期需要复习的操作

实现分页查询 将网页输入的数据存入数据库 将每个jsp文件都需要的代码抽离出来 添加jquery 全选操作 引入jstl 实现全选功能