标签:
Item 54: Familiarize yourself with the standard library, including TR1.
C++这个名字是在1983年由Rick Mascitti提出的,C++的曾用名还有”new C”, “C with Classes”。 1998年ISO/IEC 14882发布了第一个C++标准,就是我们常讲的C++98。后续的标准还包括C++03,C++TR1,C++11,C++14。 值得一提的是C++11标准,它已经被主流编译器支持。包含了核心语言的新机能,而且扩展C++标准程序库,并入了大部分的C++ TR1程序库。 Effective C++ Edition 3中大部分std::tr1都可以在std下直接访问了。
std::tr1
std
我们来回顾一下C++98中的内容:
cin
cout
cerr
clog
wchar_t
complex
valarray
exception
logic_error
runtime_error
Effective C++ Edition 3中提到了很多TR1(technical report 1)的概念:
TR1::shared_ptr
TR1::weak_ptr
TR1::auto_ptr
TR1::function
TR1::bind
this
TR1::unordered_set
TR1::unordered_multiset
TR1::unordered_map
TR1::unordered_multimap
pair
TR1::tuple
TR1::array
TR1::mem_fn
TR1::reference_wrapper
rand
TR1::result_of
Boost是一个值得我们去探索的社区,TR1中14个部分有10个是从Boost社区来的。Boost提供给的是一个模板库,只需要指定INCLUDE PATH即可, 安装Boost甚至不需要build。因为TR1里的特性在Boost基本都有,你可以告诉你的编译器把tr1当做boost:
tr1
boost
namespace std{ namespace tr1 = ::boost; }
Item 25中提到,如果你在std下私自添加东西会导致未定义行为。但上述的代码在实践中通常没什么问题。
总之,标准C++库是由STL, iostream, 本地化,C99组成的。TR1添加了智能指针、通用函数指针、哈希容器、正则表达式以及其他10个组件。 TR1在是一个标准(standard),为了使用TR1你需要一个TR1的实现(implementation),Boost就是一个很好的TR1实现。
本文地址:http://harttle.com/2015/09/24/effective-cpp-54.html
Item 54:熟悉一下标准库,比如TR1
原文地址:http://blog.csdn.net/yangjvn/article/details/50705981