




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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中国安科院新业态安全研究所招聘3人笔试备考试题及答案解析
- 2025浙江台州市温岭市海城投资集团有限公司招聘编外工作人员1人笔试备考试题及答案解析
- 家电维修规范工作流程
- 2025云南省腾冲出入境边防检查站片马分站边境管控专职辅警招聘(3人)模拟试卷附答案详解
- 2025云南昆明市官渡区职业高级中学秋季学期聘用制教师招聘16人(二)笔试含答案
- 热带果园种植技术要点大揭秘
- 水利工程水资源调查的规定
- 2025年通分测试题及答案
- 2025企业劳动合同范本新版
- 托管班的转让合同协议书
- 2025年新西师大版数学三年级上册全册教学课件
- 2025年证券从业资格考试金融市场基础知识押题及答案
- (正式版)DB1509∕T 0003-2023 《奶绵羊产奶性能测定技术规程》
- 舞蹈老师自我介绍课件
- 2025年吉林省教育系统校级后备干部选拔考试题及答案
- 社区安全知识培训资料课件
- 托盘运输知识培训内容课件
- 2024年春季云南省高中学业水平合格性考试化学试卷真题(含答案)
- 2025年不明原因肺炎应急演练预案范文
评论
0/150
提交评论