码迷,mamicode.com
首页 > 其他好文 > 详细

std和stl的关系

时间:2018-06-11 18:00:29      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:ida   lan   TE   iter   头文件   color   声明   自己的   div   

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

1 #include<iostream>
2 using namespace std;//他的作用?cout不应该在头文件里面定义的函数吗?
3 int main(0
4 {
5      cout<<"你好"6      return 07 }

  下面就介绍一下,为什么在引用了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)的设计者,特意在库文件加上了命名空间。这样,我们使用者就可以在定义自己的函数时,定义自己的命名空间。然后在自己命名空间范围内引用重名的函数。

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

  一个注意点,标准编码风格要求接口和实现分离。头文件包含命名空间的定义类、变量、函数、模板和其他命名空间。源文件包含命名空间成员的定义部分。

 1 //myfile.h
 2 #include<string>
 3 namespace my_std{
 4     class sales_data{/*各种函数的声明*/};
 5 }
 6 
 7 //myfile.cc
 8 #include"myfile.h"         
 9 namespace my_std{
10   //sales_data类中函数的实现
11 }
12 
13 //main.cc
14 #include"myfile.h"          //若想在main.cc文件加头文件,如iostream,最好加在引入的文件之前
15 int main()
16 {
17     using my_std::sales_data;
18     sales_data data1,data2;
19     //...
20     return 0;
21 }

    由上可以看出,基于接口实现分离。要在.h和.cc文件中加上namespace。这样的话,就可以在main文件中引入命名空间,在一定作用域下使用特定的函数。

三、在标准库里实战分析

      

std和stl的关系

标签:ida   lan   TE   iter   头文件   color   声明   自己的   div   

原文地址:https://www.cnblogs.com/huangfuyuan/p/9168253.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!