全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5 完整列表G+ 2.91.57,cygnuscygwin-b20includeg+stl_set.h 完整列表/* * * 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_STL_BEGIN_NAMESPACE#if defined(_sgi) & !defined(_GNUC_) & (_MIPS_SIM != _MIPS_SIM_ABI32)#pragma set woff 1174#endif#ifndef _STL_LIMITED_DEFAULT_TEMPLATEStemplate class Key, class Compare = less, class Alloc = alloc#elsetemplate #endifclass set public: / typedefs: typedef Key key_type; typedef Key value_type; / 注意,以下 key_compare 和 value_compare 使用相同的比較函式 typedef Compare key_compare; typedef Compare value_compare;private: /* 注意,identity 定義於 ,參見第7章,其定義為: template struct identity : public unary_function const T& operator()(const T& x) const return x; ; */ / 以下,rb_tree typedef rb_treekey_type, value_type, identity, key_compare, Alloc rep_type; rep_type t; / 採用紅黑樹(RB-tree)來表現 setpublic: 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; / 注意上一行,iterator 定義為 RB-tree 的 const_iterator,這表示 set 的 / 迭代器無法執行寫入動作。這是因為 set 的元素有一定次序安排, / 不允許使用者在任意處做寫入動作。 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; / allocation/deallocation / 注意, set 一定使用 insert_unique() 而不使用 insert_equal()。 / multiset 才使用 insert_equal()。 set() : t(Compare() explicit set(const Compare& comp) : t(comp) #ifdef _STL_MEMBER_TEMPLATES template set(InputIterator first, InputIterator last) : t(Compare() t.insert_unique(first, last); template set(InputIterator first, InputIterator last, const Compare& comp) : t(comp) t.insert_unique(first, last); #else set(const value_type* first, const value_type* last) : t(Compare() t.insert_unique(first, last); set(const value_type* first, const value_type* last, const Compare& comp) : t(comp) t.insert_unique(first, last); set(const_iterator first, const_iterator last) : t(Compare() t.insert_unique(first, last); set(const_iterator first, const_iterator last, const Compare& comp) : t(comp) t.insert_unique(first, last); #endif /* _STL_MEMBER_TEMPLATES */ set(const set& x) : t(x.t) set& operator=(const set& x) t = x.t; return *this; / 以下所有的 set操作行為,RB-tree 都已提供,所以 set 只要轉呼叫即可。 / accessors: key_compare key_comp() const return t.key_comp(); / 以下注意,set 的value_comp() 事實上為RB-tree 的key_comp()。 value_compare value_comp() const return t.key_comp(); iterator begin() const return t.begin(); iterator end() const return t.end(); reverse_iterator rbegin() const return t.rbegin(); reverse_iterator rend() const return t.rend(); bool empty() const return t.empty(); size_type size() const return t.size(); size_type max_size() const return t.max_size(); void swap(set& x) t.swap(x.t); / insert/erase typedef pair pair_iterator_bool; pair insert(const value_type& x) pair p = t.insert_unique(x); return pair(p.first, p.second); iterator insert(iterator position, const value_type& x) typedef typename rep_type:iterator rep_iterator; return t.insert_unique(rep_iterator&)position, x); #ifdef _STL_MEMBER_TEMPLATES template void insert(InputIterator first, InputIterator last) t.insert_unique(first, last); #else void insert(const_iterator first, const_iterator last) t.insert_unique(first, last); void insert(const value_type* first, const value_type* last) t.insert_unique(first, last); #endif /* _STL_MEMBER_TEMPLATES */ void erase(iterator position) typedef typename rep_type:iterator rep_iterator; t.erase(rep_iterator&)position); size_type erase(const key_type& x) return t.erase(x); void erase(iterator first, iterator last) typedef typename rep_type:iterator rep_iterator; t.erase(rep_iterator&)first, (rep_iterator&)last); void clear() t.clear(); / set operations: iterator find(const key_type& x) const return t.find(x); size_type count(const key_type& x) const return t.count(x); iterator lower_bound(const key_type& x) const return t.lower_bound(x); iterator upper_bound(const key_type& x) const return t.upper_bound(x); pair equal_range(const key_type& x) const return t.equal_range(x); friend bool operat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年下半年贵州省黔东南州直属事业单位招聘11人(第二轮)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年贵州华创产业投资限公司招聘融资专员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年西南证券股份限公司公开招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年芜湖市民政局局属事业单位局管社会团体招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年芜湖经济技术开发区人民法院招考工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年自贡市国投建筑产业发展限公司招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025年中国木制单杠市场调查研究报告
- 2025年下半年聊城市中和农信冠县农户自立服务社招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年秋季福建莆田市事业单位招聘考试拟聘用人员(十六)易考易错模拟试题(共500题)试卷后附参考答案
- 2025及未来5年中国香雪球市场调查、数据监测研究报告
- 2025江苏南京玄武区招聘社区工作者和“两新”组织专职党务工作人员70人考试参考试题及答案解析
- 华为安全ia题库及答案解析
- 2025年04月自考00144企业管理概论试题及标准答案
- 湖北省“新八校”协作体2025-2026学年度上学期高三10月月考语文试题及答案
- 2025年初级会计考试(实务+经济法)真题试卷及参考答案(完整版)
- 13《少年中国说(节选)》教学设计 统编版小学语文五年级上册
- 电气安全培训王老师课件
- 前列腺癌全程管理专家共识(2025版)
- 湘美版(2024)八年级上册 第一单元第2课《多彩的假期》课件(内嵌视频)
- 2025年中国石油辽河石化公司秋季高校毕业生招聘45人笔试参考题库附带答案详解
- 食品安全小组培训课件
评论
0/150
提交评论