std和stl的关系

  • 一、std和stl的关系
  • 二、实现自己的库和命名空间

【前言】在写程序时,虽然一直这么用,有点疑惑为甚么引入了头文件.h还要在加上using namespace std?例如:

下面就介绍一下,为什么在引用了iostream头文件的情况下,想使用cout,还要加上std命名空间。

一、std和stl的关系

stl是标准模板库,是标准库的子集。主要是容器、算法、迭代器三个方面,几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。标准模板库里面没有string,但是他在标准库里面,用来输入一个字符串类型。
  STD是命名空间的名字,目的是为了避免命名空间污染。模板库(包括stl)的设计者,特意在库文件里面加上了命名空间(下面会分析怎么加的)。这样,我们使用者就可以在定义自己的函数时,定义自己的命名空间。然后在自己定义的命名空间作用域范围内,使用我们自己定义的、但可能和标准库里的函数重名的函数。这样就不会有函数冲突了,使用时注意命名空间的作用域就好了!

二、实现自己的库和命名空间

一个注意点,标准编码风格要求接口和实现分离。头文件包含命名空间的定义类、变量、函数、模板和其他命名空间的声明。源文件包含命名空间成员的定义部分。
  
   由上可以看出,基于接口实现分离。要在.h和.cc文件中加上namespace。这样的话,就可以在main文件中引入命名空间,在一定作用域下使用特定的函数。

std和stl的关系相关推荐

  1. 重温STL, STD

    一, 定义 STL = Standard Template Library,标准模板库 http://baike.baidu.com/link?url=ZgViQn8lnJ3Z8MhF-R8MmEei ...

  2. 内建函数对象(STL)

    引言 函数对象是重载函数调用操作符的类,函数对象使用重载的()时,因为类似函数调用,也叫仿函数 所以仿函数(函数对象)就是一个类 我们可以自己建立函数对象,这里就不具体说了:STL中同样给我们提供了一 ...

  3. [技术] OIer的C++标准库 : STL入门

    注: 本文主要摘取STL在OI中的常用技巧应用, 所以可能会重点说明容器部分和算法部分, 且不会讨论所有支持的函数/操作并主要讨论 C++11 前支持的特性. 如果需要详细完整的介绍请自行查阅标准文档 ...

  4. 第一篇:C/C++语法与std数据结构

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 编程基础及进阶 一.C/C++的介绍 1.从面向过程,到面向对象 面 ...

  5. java stl stack_C++标准库之stack

    C++库以提供"模板"为主.所谓模板,是指不必预先制定类型的函数或类.我们可以借助STL(标准模板库 Standard Template Library, STL)提供的高效算法来 ...

  6. c++stl和std_std :: replace()函数以及C ++ STL中的示例

    c++stl和std C ++ STL std :: replace()函数 (C++ STL std::replace() function) replace() function is a lib ...

  7. c++stl和std_std :: rotate()函数以及C ++ STL中的示例

    c++stl和std C ++ STL std :: rotate()函数 (C++ STL std::rotate() function) rotate() function is a librar ...

  8. STL工具书(常用用法总结)

    STL工具书(常用用法总结) 此博客可用于常用STL用法的快速查询与使用, 对于原理方面可以查阅相关文档. 目录 STL工具书(常用用法总结) 1. 容器 1.1 序列式容器 1. 数组(array) ...

  9. 黑马程序员C++学习笔记(第三阶段核心:STL)--- 更新中

    目录 迭代器 序列式容器 vector -- 可随机访问 list -- 不支持随机访问 deque -- 动态 关联式容器 -- 红黑树 map multimap set multiset -- 废 ...

最新文章

  1. java实体属性对应mysql和SQL Server 和Oracle 数据类型对应
  2. Eclipse-Java代码规范和质量检查插件-SonarLint
  3. linux磁盘分配方案,安装Linux系统磁盘分配方案.doc
  4. 13.3的MacBook air 8g内存还是有点吃力
  5. 利用WireShark分析由Ping产生的Internet 控制报文协议(ICMP)
  6. ENVI计算公式(一)
  7. day53-Django之路由系统
  8. pythonの连接MySQL数据库
  9. linux 域名怎么平台,linux平台搭建DNS域名服务与常用配置
  10. layui-treeTable v2.0添加搜索功能
  11. java计算机毕业设计小学教师课程管理系统源码+系统+数据库+lw文档
  12. vbs或vbe如何修改图标
  13. 2019高考(高中)数学必背重点公式大全
  14. 计算机睡眠重启后无法识别网络,教您一招解决电脑休眠唤醒后无法使用USB键盘的操作方法...
  15. mciSendString函数简介(播放音乐以及录音相关操作)
  16. 最小化一维曼哈顿距离的简单证明
  17. 用户画像(User Profile)概述
  18. Android推特图片保存路径,如何将twitter的URL内容(tweet,user,comment,…)添加到我的android应用程序...
  19. dynamic 365 前端操作
  20. PostgreSQL谓词之EXISTS

热门文章

  1. Python 生成数据 make_circles 和 make_moons
  2. android动态壁纸学习
  3. 聊聊数据仓库中维度表设计的二三事
  4. html的基本模板结构图
  5. thymeleaf th:if 判断表达式的使用
  6. 解密中企动力:80余家公司近万人个个都干营销 不骗你
  7. 迪杰斯特拉算法实现-Dijkstra 简单版
  8. 做python的socket训练,在Windows中使用telnet只能发送一个字符的问题。
  9. 【Unity/AR/Android】Unity中配置EasyAR开发环境
  10. 解决SecureCRT连接Linux虚拟机没有弹出输入密码无法连接