小智 27
有一本书C++标准模板库,由最初的STL设计师Stepanov&Lee(与PJ Plauger和David Musser一起)共同撰写,描述了一个可能的实现,包括代码 - 请参阅http://www.amazon. co.uk/C-Standard-Template-Library/dp/0134376331.
ezp*_*sso 14
是的,Alexander Stepanov和Meng Lee有STL的原创实施.这是我见过的最易读的STL实现.你可以从这里下载.
下面是对的实现.请注意源代码的可读性:
#include <bool.h>
template <class T1, class T2>
struct pair {
T1 first;
T2 second;
pair() {}
pair(const T1& a, const T2& b) : first(a), second(b) {}
};
template <class T1, class T2>
inline bool operator==(const pair<T1, T2>& x, const pair<T1, T2>& y) {
return x.first == y.first && x.second == y.second;
}
template <class T1, class T2>
inline bool operator<(const pair<T1, T2>& x, const pair<T1, T2>& y) {
return x.first < y.first || (!(y.first < x.first) && x.second < y.second);
}
template <class T1, class T2>
inline pair<T1, T2> make_pair(const T1& x, const T2& y) {
return pair<T1, T2>(x, y);
}
Run Code Online (Sandbox Code Playgroud)
回到根源!
有两个关键点很突出:
附带说明一下,使用 MSVC 版本可能会取得更大的成功,因为它不会尝试针对多个编译器。编译器错误和实现定义的行为会导致各种微妙的解决方法。随着这些解决方法数量的增加(当您添加更多编译器时肯定会发生这种情况),代码可能会变得非常快。
| 归档时间: |
|
| 查看次数: |
11989 次 |
| 最近记录: |