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里面大部分容器都是模板