C++ STL和泛型编程(二)---- array 和 forward_list
因为将array设计成容器后,便可以利用上一些如迭代器、仿函数、算法等部件,可操作性强。
一、array
- TR1版本:


template<typename _Tp, std::size_t _Nm>
struct array{
typedef _Tp value_type;
typedef _Tp* pointer;
typedef value_type* iterator;
// 当array容器长度为0时,则默认赋值为array[1]
value_type _M_instance[_Nm ? _Nm : 1];
iterator begin(){
return iterator(&_M_instance[0]); // 返回的是native pointer型的指针迭代器
}
iterator end(){
return iterator(&_M_instance[_Nm]);
}
};
必须指定容器的大小!
- G4.9版本:
由图知,array类里有变量为_M_elems,而其是AT_Type::_Type类型,
往上看知道AT_Type又是_GLIBCXX_STD_C::__array_traits<_Tp, _Nm>类的别名。
因而找到__array_traits类,发现其定义了_Type[_Nm]为_Tp类型,因而 _AT_Type::_Type _M_elems实际上相当于 _Tp _M_elems[_Nm]。【相当于如下的声明定义形式】
typedef int T[100];
T c;
二、forward_list

本文深入探讨了C++标准模板库(STL)中array和forward_list容器的实现细节。介绍了array容器的两种版本(TR1和G4.9),并详细解释了其内部结构及迭代器的使用方式。同时,对forward_list进行了简要概述。
434

被折叠的 条评论
为什么被折叠?



