📄 _list.h
字号:
public: void splice(iterator __pos, _Self& __x) { if (!__x.empty()) _List_global_inst::_Transfer(__pos._M_node, __x.begin()._M_node, __x.end()._M_node); } void splice(iterator __pos, _Self&, iterator __i) { iterator __j = __i; ++__j; if (__pos == __i || __pos == __j) return; _List_global_inst::_Transfer(__pos._M_node, __i._M_node, __j._M_node); } void splice(iterator __pos, _Self&, iterator __first, iterator __last) { if (__first != __last) _List_global_inst::_Transfer(__pos._M_node, __first._M_node, __last._M_node); } void remove(const_reference __val) { iterator __first = begin(); iterator __last = end(); while (__first != __last) { iterator __next = __first; ++__next; if (__val == *__first) erase(__first); __first = __next; } } void unique() { _S_unique(*this, equal_to<void*>()); } void merge(_Self& __x) { _S_merge(*this, __x, less<void*>()); } void reverse() { _List_node_base* __p = this->_M_node._M_data; _List_node_base* __tmp = __p; do { _STLP_STD::swap(__tmp->_M_next, __tmp->_M_prev); __tmp = __tmp->_M_prev; // Old next node is now prev. } while (__tmp != __p); } void sort() { _S_sort(*this, less<void*>()); }#ifdef _STLP_MEMBER_TEMPLATES template <class _Predicate> void remove_if(_Predicate __pred) { _S_remove_if(*this, __pred); } template <class _BinaryPredicate> void unique(_BinaryPredicate __binary_pred) { _S_unique(*this, __binary_pred); } template <class _StrictWeakOrdering> void merge(_Self &__x, _StrictWeakOrdering __comp) { _S_merge(*this, __x, __comp); } template <class _StrictWeakOrdering> void sort(_StrictWeakOrdering __comp) { _S_sort(*this, __comp); }#endif /* _STLP_MEMBER_TEMPLATES */};# if !defined (_STLP_LINK_TIME_INSTANTIATION)# include <stl/pointers/_list.c># endif# if defined (_STLP_USE_TEMPLATE_EXPORT)_STLP_EXPORT_TEMPLATE_CLASS _List_node<void*>;typedef _List_node<void*> _VoidPtr_Node;_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy<_VoidPtr_Node*, _VoidPtr_Node, allocator<_VoidPtr_Node> >;_STLP_EXPORT_TEMPLATE_CLASS _List_base<void*,allocator<void*> >;_STLP_EXPORT_TEMPLATE_CLASS list<void*,allocator<void*> >;# endiftemplate <class _Tp, class _Alloc>class list<_Tp*, _Alloc> _STLP_STLPORT_CLASS_1{ //Member datas as a void* list: typedef typename _Alloc_traits<void*, _Alloc>::allocator_type _VoidAlloc; typedef list<void*, _VoidAlloc> _Base; _Base _M_container; typedef __void_ptr_traits<_Tp> cast_traits; typedef list<_Tp*, _Alloc> _Self;public: typedef _Tp* value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef value_type& reference; typedef value_type const_reference; typedef size_t size_type; typedef ptrdiff_t difference_type; _STLP_FORCE_ALLOCATORS(_Tp*, _Alloc) typedef typename _List_base<_Tp*, _Alloc>::allocator_type allocator_type; typedef bidirectional_iterator_tag _Iterator_category; typedef _List_iterator<_Tp*, _Nonconst_traits<_Tp*> > iterator; typedef _List_iterator<_Tp*, _Const_traits<_Tp*> > const_iterator; _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS;# if !(defined(__MRC__)||(defined(__SC__) && !defined(__DMC__))) explicit# endif list(const allocator_type& __a = allocator_type()) : _M_container(__a) {}#if !defined(_STLP_DONT_SUP_DFLT_PARAM) explicit list(size_type __n, const_reference __val = 0,#else list(size_type __n, const_reference __val,#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ const allocator_type& __a = allocator_type()) : _M_container(__n, cast_traits::cast(__val), __a) {}#if defined(_STLP_DONT_SUP_DFLT_PARAM) explicit list(size_type __n) : _M_container(__n) {}#endif /*_STLP_DONT_SUP_DFLT_PARAM*/#ifdef _STLP_MEMBER_TEMPLATES // We don't need any dispatching tricks here, because insert does all of // that anyway.# ifdef _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS template <class _InputIterator> list(_InputIterator __first, _InputIterator __last) : _M_container(__iterator_wrapper<_Tp, _InputIterator>(__first), __iterator_wrapper<_Tp, _InputIterator>(__last)) {}# endif template <class _InputIterator> list(_InputIterator __first, _InputIterator __last, const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) : _M_container(__iterator_wrapper<_Tp, _InputIterator>(__first), __iterator_wrapper<_Tp, _InputIterator>(__last), __a) {}#else /* _STLP_MEMBER_TEMPLATES */ list(const_pointer __first, const_pointer __last, const allocator_type& __a = allocator_type()) : _M_container(__first, __last, __a) {} list(const_iterator __first, const_iterator __last, const allocator_type& __a = allocator_type()) : _M_container(base_const_ite((_Node_Base*)__first._M_node), base_const_ite((_Node_Base*)__last._M_node), __a) {}#endif /* _STLP_MEMBER_TEMPLATES */ list(const _Self& __x) : _M_container(__x._M_container) {} /*explicit list(__full_move_source<_Self> src) : _List_base<void*, _Alloc>(_FullMoveSource<_List_base<void*, _Alloc> >(src.get())) { }*/ explicit list(__partial_move_source<_Self> src) : _M_container(__partial_move_source<_Base>(src.get()._M_container)) {} ~list() { } iterator begin() { return iterator(_M_container.begin()._M_node); } const_iterator begin() const { return const_iterator(_M_container.begin()._M_node); } iterator end() { return iterator(_M_container.end()._M_node); } const_iterator end() const { return const_iterator(_M_container.end()._M_node); } reverse_iterator rbegin() { return reverse_iterator(end()); } const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } reverse_iterator rend() { return reverse_iterator(begin()); } const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } bool empty() const { return _M_container.empty(); } size_type size() const { return _M_container.size(); } size_type max_size() const { return _M_container.max_size(); } reference front() { return *begin(); } const_reference front() const { return *begin(); } reference back() { return *(--end()); } const_reference back() const { return *(--end()); } void swap(_Self &__x) { _M_container.swap(__x._M_container); } void clear() { _M_container.clear(); }#if !defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) iterator insert(iterator __pos, const_reference __x = 0)#else iterator insert(iterator __pos, const_reference __x)#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ { return iterator(_M_container.insert(__pos._M_node, cast_traits::cast(__x))._M_node); }#ifdef _STLP_MEMBER_TEMPLATES template <class _InputIterator> void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { _M_container.insert(__pos._M_node, __iterator_wrapper<_Tp, _InputIterator>(__first), __iterator_wrapper<_Tp, _InputIterator>(__last)); }#else /* _STLP_MEMBER_TEMPLATES */ void insert(iterator __pos, const_pointer __first, const_pointer __last) { _M_container.insert(__pos._M_node, __first._M_node, __last._M_node); } void insert(iterator __pos, const_iterator __first, const_iterator __last) { _M_container.insert(__pos._M_node, __first._M_node, __last._M_node); }#endif /* _STLP_MEMBER_TEMPLATES */ void insert(iterator __pos, size_type __n, const_reference __x) { _M_container.insert(__pos._M_node, __n, cast_traits::cast(__x)); } void push_front(const_reference __x) { insert(begin(), __x); } void push_back(const_reference __x) { insert(end(), __x); }#if defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) iterator insert(iterator __pos) { return insert(__pos, __STATIC_CAST(_Tp*, 0)); } void push_front() {insert(begin());} void push_back() {insert(end());}# endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ iterator erase(iterator __pos) { return iterator(_M_container.erase(__pos._M_node)._M_node); } iterator erase(iterator __first, iterator __last) { return iterator(_M_container.erase(__first._M_node, __last._M_node)._M_node); }#if !defined(_STLP_DONT_SUP_DFLT_PARAM) void resize(size_type __new_size, const_reference __x = 0)#else void resize(size_type __new_size) { this->resize(__new_size, __STATIC_CAST(void*, 0)); } void resize(size_type __new_size, const_reference __x)#endif /*!_STLP_DONT_SUP_DFLT_PARAM*/ {_M_container.resize(__new_size, cast_traits::cast(__x));} void pop_front() { _M_container.pop_front(); } void pop_back() { _M_container.pop_back(); } _Self& operator=(const _Self& __x) {_M_container = __x._M_container; return *this;} void assign(size_type __n, const_reference __val) { _M_container.assign(__n, cast_traits::cast(__val)); }#ifdef _STLP_MEMBER_TEMPLATES template <class _InputIterator> void assign(_InputIterator __first, _InputIterator __last) { _M_container.assign(__iterator_wrapper<_Tp, _InputIterator>(__first), __iterator_wrapper<_Tp, _InputIterator>(__last)); }#endif /* _STLP_MEMBER_TEMPLATES */ void splice(iterator __pos, _Self& __x) { _M_container.splice(__pos._M_node, __x._M_container); } void splice(iterator __pos, _Self& __x, iterator __i) { _M_container.splice(__pos._M_node, __x._M_container, __i._M_node); } void splice(iterator __pos, _Self& __x, iterator __first, iterator __last) { _M_container.splice(__pos._M_node, __x._M_container, __first._M_node, __last._M_node); } void remove(const_reference __val) { _M_container.remove(cast_traits::cast(__val)); } void unique() { _M_container.unique(); } void merge(_Self& __x) { _M_container.merge(__x._M_container); } void reverse() { _M_container.reverse(); } void sort() { _M_container.sort(); }#ifdef _STLP_MEMBER_TEMPLATES template <class _Predicate> void remove_if(_Predicate __pred) { _M_container.remove_if(__unary_pred_wrapper<_Tp, _Predicate>(__pred)); } template <class _BinaryPredicate> void unique(_BinaryPredicate __bin_pred) { _M_container.unique(__binary_pred_wrapper<_Tp, _BinaryPredicate>(__bin_pred)); } template <class _StrictWeakOrdering> void merge(_Self &__x, _StrictWeakOrdering __comp) { _M_container.merge(__x._M_container, __binary_pred_wrapper<_Tp, _StrictWeakOrdering>(__comp)); } template <class _StrictWeakOrdering> void sort(_StrictWeakOrdering __comp) { _M_container.sort(__binary_pred_wrapper<_Tp, _StrictWeakOrdering>(__comp)); }#endif /* _STLP_MEMBER_TEMPLATES */};#endif /* _STLP_SPECIALIZED_LIST_H */// Local Variables:// mode:C++// End:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -