s.count(k) | 返回 s 中元素 k 出现的次数 |
s.find(k) | 如果 s 中存在元素 k 则返回指向元素的迭代器,若不存在,则返回超出末端容器 |
s.insert(e) | 将元素 e 插入到 s 中。返回值类型为std::pair bool代表插入是否成功 |
s.inset(beg, end) | beg 和 end 是标记元素范围的迭代器,将beg 到 end 之间的元素插入到s中,返回值为void |
s.insert(iter, e) | 将元素e插入到s中的iter位置,返回一个迭代器,指向插入元素位置 |
s.erase(k) | 删除s中元素 k , 返回删除元素的个数 |
s.erase(p) | 从s中删除迭代器p指向的元素, 返回void |
s.erase(beg, end) | 从s中删除由迭代器beg到end的所有元素,返回void |
/*** Copyright (c) 1994* Hewlett-Packard Company** Permission to use, copy, modify, distribute and sell this software* and its documentation for any purpose is hereby granted without fee,* provided that the above copyright notice appear in all copies and* that both that copyright notice and this permission notice appear* in supporting documentation. Hewlett-Packard Company makes no* representations about the suitability of this software for any* purpose. It is provided "as is" without express or implied warranty.*** Copyright (c) 1996,1997* Silicon Graphics Computer Systems, Inc.** Permission to use, copy, modify, distribute and sell this software* and its documentation for any purpose is hereby granted without fee,* provided that the above copyright notice appear in all copies and* that both that copyright notice and this permission notice appear* in supporting documentation. Silicon Graphics makes no* representations about the suitability of this software for any* purpose. It is provided "as is" without express or implied warranty.*//* NOTE: This is an internal header file, included by other STL headers.* You should not attempt to use it directly.*/#ifndef __SGI_STL_INTERNAL_SET_H
#define __SGI_STL_INTERNAL_SET_H#include
#pragma set woff 1174
#pragma set woff 1375
#endif// Forward declarations of operators
class set;template
inline bool operator&#61;&#61;(const set<_Key,_Compare,_Alloc>& __x, const set<_Key,_Compare,_Alloc>& __y);template
inline bool operator<(const set<_Key,_Compare,_Alloc>& __x, const set<_Key,_Compare,_Alloc>& __y);template
class set {// requirements:__STL_CLASS_REQUIRES(_Key, _Assignable);__STL_CLASS_BINARY_FUNCTION_CHECK(_Compare, bool, _Key, _Key);public:// typedefs:typedef _Key key_type;typedef _Key value_type;typedef _Compare key_compare;typedef _Compare value_compare;
private:typedef _Rb_tree
public:typedef typename _Rep_type::const_pointer pointer;typedef typename _Rep_type::const_pointer const_pointer;typedef typename _Rep_type::const_reference reference;typedef typename _Rep_type::const_reference const_reference;typedef typename _Rep_type::const_iterator iterator;typedef typename _Rep_type::const_iterator const_iterator;typedef typename _Rep_type::const_reverse_iterator reverse_iterator;typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;typedef typename _Rep_type::size_type size_type;typedef typename _Rep_type::difference_type difference_type;typedef typename _Rep_type::allocator_type allocator_type;// allocation/deallocationset() : _M_t(_Compare(), allocator_type()) {}explicit set(const _Compare& __comp,const allocator_type& __a &#61; allocator_type()): _M_t(__comp, __a) {}#ifdef __STL_MEMBER_TEMPLATEStemplate
#elseset(const value_type* __first, const value_type* __last) : _M_t(_Compare(), allocator_type()) { _M_t.insert_unique(__first, __last); }set(const value_type* __first, const value_type* __last, const _Compare& __comp,const allocator_type& __a &#61; allocator_type()): _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }set(const_iterator __first, const_iterator __last): _M_t(_Compare(), allocator_type()) { _M_t.insert_unique(__first, __last); }set(const_iterator __first, const_iterator __last, const _Compare& __comp,const allocator_type& __a &#61; allocator_type()): _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
#endif /* __STL_MEMBER_TEMPLATES */set(const set<_Key,_Compare,_Alloc>& __x) : _M_t(__x._M_t) {}set<_Key,_Compare,_Alloc>& operator&#61;(const set<_Key, _Compare, _Alloc>& __x){ _M_t &#61; __x._M_t; return *this;}// accessors:key_compare key_comp() const { return _M_t.key_comp(); }value_compare value_comp() const { return _M_t.key_comp(); }allocator_type get_allocator() const { return _M_t.get_allocator(); }iterator begin() const { return _M_t.begin(); }iterator end() const { return _M_t.end(); }reverse_iterator rbegin() const { return _M_t.rbegin(); } reverse_iterator rend() const { return _M_t.rend(); }bool empty() const { return _M_t.empty(); }size_type size() const { return _M_t.size(); }size_type max_size() const { return _M_t.max_size(); }void swap(set<_Key,_Compare,_Alloc>& __x) { _M_t.swap(__x._M_t); }// insert/erasepair
#ifdef __STL_MEMBER_TEMPLATEStemplate
#elsevoid insert(const_iterator __first, const_iterator __last) {_M_t.insert_unique(__first, __last);}void insert(const value_type* __first, const value_type* __last) {_M_t.insert_unique(__first, __last);}
#endif /* __STL_MEMBER_TEMPLATES */void erase(iterator __position) { typedef typename _Rep_type::iterator _Rep_iterator;_M_t.erase((_Rep_iterator&)__position); }size_type erase(const key_type& __x) { return _M_t.erase(__x); }void erase(iterator __first, iterator __last) { typedef typename _Rep_type::iterator _Rep_iterator;_M_t.erase((_Rep_iterator&)__first, (_Rep_iterator&)__last); }void clear() { _M_t.clear(); }// set operations:iterator find(const key_type& __x) const { return _M_t.find(__x); }size_type count(const key_type& __x) const {return _M_t.find(__x) &#61;&#61; _M_t.end() ? 0 : 1;}iterator lower_bound(const key_type& __x) const {return _M_t.lower_bound(__x);}iterator upper_bound(const key_type& __x) const {return _M_t.upper_bound(__x); }pair
#else /* __STL_TEMPLATE_FRIENDS */friend bool __STD_QUALIFIERoperator&#61;&#61; __STL_NULL_TMPL_ARGS (const set&, const set&);friend bool __STD_QUALIFIERoperator<__STL_NULL_TMPL_ARGS (const set&, const set&);
#endif /* __STL_TEMPLATE_FRIENDS */
};template
inline bool operator&#61;&#61;(const set<_Key,_Compare,_Alloc>& __x, const set<_Key,_Compare,_Alloc>& __y) {return __x._M_t &#61;&#61; __y._M_t;
}template
inline bool operator<(const set<_Key,_Compare,_Alloc>& __x, const set<_Key,_Compare,_Alloc>& __y) {return __x._M_t <__y._M_t;
}#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDERtemplate
inline bool operator!&#61;(const set<_Key,_Compare,_Alloc>& __x, const set<_Key,_Compare,_Alloc>& __y) {return !(__x &#61;&#61; __y);
}template
inline bool operator>(const set<_Key,_Compare,_Alloc>& __x, const set<_Key,_Compare,_Alloc>& __y) {return __y <__x;
}template
inline bool operator<&#61;(const set<_Key,_Compare,_Alloc>& __x, const set<_Key,_Compare,_Alloc>& __y) {return !(__y <__x);
}template
inline bool operator>&#61;(const set<_Key,_Compare,_Alloc>& __x, const set<_Key,_Compare,_Alloc>& __y) {return !(__x <__y);
}template
inline void swap(set<_Key,_Compare,_Alloc>& __x, set<_Key,_Compare,_Alloc>& __y) {__x.swap(__y);
}#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM !&#61; _MIPS_SIM_ABI32)
#pragma reset woff 1174
#pragma reset woff 1375
#endif__STL_END_NAMESPACE#endif /* __SGI_STL_INTERNAL_SET_H */// Local Variables:
// mode:C&#43;&#43;
// End: