首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

STL源码中头文件如何用

2013-03-10 
STL源码中头文件怎么用我下了个STL源码,但里面都是头文件,不知是下错了,还是另有乾坤?[解决办法]现在大多

STL源码中头文件怎么用
STL源码中头文件如何用
我下了个STL源码,但里面都是头文件,不知是下错了,还是另有乾坤?
[解决办法]
现在大多数编译器都不支持模板的分离编译,因此模板必须全部写在头文件中
STL里面都是头文件,有什么奇怪的地方吗?
[解决办法]
STL的源码都在.h头文件里,只是你看不看得懂的问题
[解决办法]
string

// string standard header
#pragma once
#ifndef _STRING_
#define _STRING_
#ifndef RC_INVOKED
#include <istream>

 #pragma pack(push,_CRT_PACKING)
 #pragma warning(push,3)

 #pragma warning(disable: 4189)
 #pragma warning(disable: 4172)

_STD_BEGIN
// basic_string TEMPLATE OPERATORS
template<class _Elem,
class _Traits,
class _Alloc> inline
basic_string<_Elem, _Traits, _Alloc> operator+(
const basic_string<_Elem, _Traits, _Alloc>& _Left,
const basic_string<_Elem, _Traits, _Alloc>& _Right)
{// return string + string
basic_string<_Elem, _Traits, _Alloc> _Ans;
_Ans.reserve(_Left.size() + _Right.size());
_Ans += _Left;
_Ans += _Right;
return (_Ans);
}

template<class _Elem,
class _Traits,
class _Alloc> inline
basic_string<_Elem, _Traits, _Alloc> operator+(
const _Elem *_Left,
const basic_string<_Elem, _Traits, _Alloc>& _Right)
{// return NTCS + string
basic_string<_Elem, _Traits, _Alloc> _Ans;
_Ans.reserve(_Traits::length(_Left) + _Right.size());
_Ans += _Left;
_Ans += _Right;
return (_Ans);
}
...

[解决办法]
STL实现都包含在头文件里面,这和模板有关系,要使用一个模板类,必须能看到他的实现。而STL里面大部分容器都是模板

热点排行