theme: smartblue
list
list文档
- list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。
- list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。
- list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。
- 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率 更好。
5.与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如:要访问list 的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间 开销;list还需要一些额外的空间,以保存每个节点的相关联信息(对于存储类型较小元素的大list来说这 可能是一个重要的因素)
list类的函数接口
namespace ding
{
//结点类
template<class T>
struct _list_node
{
//构造函数
_list_node(const T& val = T());
T _data;
_list_node<T>* _next;
_list_node<T>* _prev;
};
//迭代器类
template<class T, class Ref, class Ptr>
struct _list_iterator
{
typedef _list_node<T> node;
typedef _list_iterator<T, Ref, Ptr> self;
//构造函数
_list_iterator(node* pnode);
self operator++();
self operator--();
self operator++(int);
self operator--(int);
bool operator==(const self& s) const;
bool operator!=(const self& s) const;
Ref operator*();
Ptr operator->();
//成员变量
node* _pnode;
};
//list类
template<class T>
class list
{
public:
typedef _list_node<T> node;
typedef _list_iterator<T, T&, T*> iterator;
typedef _list_iterator<T, const T&, const T*> const_iterator;
//Member functions
list();
list(const list<T>& lt);
list<T>& operator=(const list<T>& lt);
~list();
//Iterators:
iterator begin();
iterator end();
const_iterator begin() const;
const_iterator end() const;
//Element access:
T& front();
T& back();
const T& front() const;
const T& back(

最低0.47元/天 解锁文章
1988

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



