C++ 语言总览 标准库

在学习使用C 和C++ 的过程中对于头文件的引用有几点注意。

C 的版本问题疑问
目前主要的C语言规范有c89(c90), c95(94)和c99。C89是最早的C语言规范,于89年提出,90年先由美国国家标准局推出ANSI版本,后来被接纳为ISO国际标准 (ISO/IEC 9899:1990),因而有时也称为c90。但在94和96年分别对c90进行了两次错误修正,gcc支持的是修正后的c89(90)版本的C语言规 范。在95年提出过对90版规范的修订案,称为 C95或者AMD1。gcc也支持c95规范。最新的一次C规范修订在99年制定(ISO/IEC 9899:1999),即常称的C99规范。在2001年对C99的错误进行了修正,gcc支持的修正后的c99规范,但是到目前为止,gcc还没有完成对c99规范的完全支持。

C++ 标准库

C++ 标准库可以分为两部分(从结构上划分:支持对象和面向的结构):

  • 标准函数库: 这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自 C 语言。
    C++ 标准库包含了所有的 C 标准库,为了支持类型安全,做了一定的添加和修改。
    标准函数库
    标准函数库分为以下几类:
    • 输入/输出 I/O
    • 字符串和字符处理
    • 数学
    • 时间、日期和本地化
    • 动态分配
    • 其他
    • 宽字符函数
  • 面向对象类库: 这个库是类及其相关函数的集合。
    • 标准的 C++ I/O 类
    • String 类
    • 数值类
    • 统称为:STL 标准模板库,包含STL 容器类 STL 算法 STL 函数对象 STL 迭代器 STL 分配器
    • 本地化库
    • 异常处理类
    • 杂项支持库

C++ 标准库包含了所有的 C 标准库,为了支持类型安全,做了一定的添加和修改。

  • 如何对函数进行修改和添加的,需要根据具体的内容。
    C compatibility headers
    For some of the C standard library headers of the form xxx.h, the C++ standard library both includes an identically-named header and another header of the form cxxx (all meaningful cxxx headers are listed above).
    With the exception of complex.h(除了 complex.h 之外) , each xxx.h header included in the C++ standard library places in the global namespace each name that the corresponding cxxx header would have placed in the std namespace.
    These headers are allowed to also declare the same names in the std namespace, and the corresponding cxxx h headers are allowed to also declare the same names in the global namespace: including definitely provides std::malloc and may also provide ::malloc. Including <stdlib.h> definitely provides ::malloc and may also provide std::malloc. This applies even to functions and function overloads that are not part of C standard library.

总结

  • 在c中的头文件xxx.h,在c++中包含两个,同名xxx.h. 和cxxx
  • 除了complex.h 文件,C ++标准库中包含的每个xxx.h标头都在全局名称空间中放置每个名称,相关的cxxx 头文件会放置在std命名空间中。(全局空间用c.h ,namespace 中用std .就是两种引用方式# include<stdlib.h> // #include<cstdlib> using namespace std;
  • <stdlib.h> <cstdlib> using namespace std; 可以相互交叉,即使stdllb.h虽然是全局空间的,但是也包含 std 空间的同步函数。stdlib.h 包含::malloc同时std:: malloc, 同样如此。
    具体到哪一个c++头文件,对c的修改和引用。c的头文件被c++同名的库替换(deprecated)参考:
    C++ Standard Library headers
    C Standard Library headers

STL 是 C++ 标准程序库的核心。STL 内的所有组件都由模板构成,其元素可以是任意型别。程序员通过选用恰当的群集类别调用其成员函数和算法中的数据即可,但代价是 STL 晦涩难懂。
参考文章:

  1. 什么是STL
  2. 标准模板库_概览
  3. C++ 参考文档

相关问题

  1. C 与C++ 真正的区别在哪里
  2. C 语言中,「.」与「->」有什么区别?
    AN: 在阅读了相关的回答后,在现今的c编译器中,这两个的使用在语法(语言的使用方法)使用上,是没有区别的,但是语义(语言的含义)是有区别的。
    a.b 指的是:
  3. C++ 的重要版本:C++98/C++11/C++14/C++17

C++ 多线程编程

概述:C语言支持多线程,这与系统平台等有一系列关系,不象在java中的虚拟机,有支持多线程语法;
在C++11 中,可以使用语言提供的多线程编程方式
同时,在linux 中有直接的提供打库,支持多线程编程

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页