多重集合set 的list实现详解
来源:互联网 发布:y4wq 3网络模块卡线刀 编辑:程序博客网 时间:2024/05/23 17:38
#ifndef MINIMULTISET_H
#define MINIMULTISET_H
#include
#include
#include
using namespace std;
template
class miniMultiSet
{
public:
typedef typename list
typedef typename list
//miniMultiSet的迭代器就是list的迭代器
miniMultiSet() ;
miniMultiSet(T* first , T* last) ;
//多重集,[first , last)
bool empty() const ;
int size() const ;
int count(const T& item) const ;
//返回item在多重集中重复出现的次数
iterator find(const T& item) ;
//指向第一个匹配元素,否则指向end
const_iterator find(const T& item) const ;
pair
pair
//返回迭代器对 , 使得所有匹配item的元素都在区间[first ,last) ;
iterator insert(const T& item) ;
int erase(const T& item) ;
void erase(iterator pos) ;
void erase(iterator first , iterator last) ;
iterator begin() ;
const_iterator begin() const ;
iterator end() ;
const_iterator end() const ;
private:
list
int distance(iterator first , iterator last) ;
//返回区间[first, last)内的元素个数
int distance(const_iterator first , const_iterator last) const;
//常量版本
};
template
int miniMultiSet
{
int cnt ;
iterator iter = first;
while(iter != last)
{
cnt ++ ;
iter ++ ;
}
return cnt ;
}
template
int miniMultiSet
{
int cnt ;
iterator iter = first ;
while(iter != last)
{
cnt ++ ;
iter ++ ;
}
return cnt ;
}
template
miniMultiSet
{
}
template
miniMultiSet
{
T* tmp = first ;
while(tmp != last)
{
insert(*tmp);
tmp ++ ;
}
}
template
bool miniMultiSet
{
return multisetList.empty() ;
}
template
int miniMultiSet
{
return multisetList.size() ;
}
template
int miniMultiSet
{
int cnt = 0 ;
const_iterator iter ;
pair
p = equal_range(item) ;
if (p.first == end())
{
cnt = 0 ;
}
else
{
iter = p.first ;
while(iter != p.second)
{
cnt ++ ;
iter ++ ;
}
}
return cnt ;
}
template
miniMultiSet
{
iterator iter = begin() ;
while((iter != end()) && (*iter != item) )
iter ++ ;
return iter ;
}
template
miniMultiSet
{
const_iterator iter = begin() ;
while((iter != end()) &&(*iter != item) )
iter ++ ;
return iter ;
}
template
pair
{
pair
p.first = find(item);
if (p.first == end())
{
p.second = end();
return p ;
}
iterator iter = p.first ;
while((iter != end()) && (*iter == item))
{
iter ++ ;
p.second = iter ;
}
return p ;
}
template
pair
{
pair
p.first = find(item) ;
if (p.first == end())
{
p.second = end() ;
return p ;
}
const_iterator iter = p.first ;
while((iter != end()) && (*iter == item))
{
iter ++ ;
p.second = iter ;
}
return p ;
}
template
miniMultiSet
{
iterator iter ;
iter = find(item);
multisetList.insert(iter,item) ;
iter = find(item) ;
return iter ;
}
template
int miniMultiSet
{
int cnt = 0 ;
iterator iter = find(item) ;
if (iter != end())
{
while((*iter == item) && (iter != end()))
{
multisetList.erase(iter ++ );
cnt ++ ;
}
}
else
cnt = 0 ;
return cnt ;
}
template
void miniMultiSet
{
multisetList.erase(pos) ;
}
template
void miniMultiSet
{
iterator iter = first ;
while(iter != last)
{
multisetList.erase(iter ++ ) ;
}
}
template
miniMultiSet
{
iterator iter = multisetList.begin() ;
return iter ;
}
template
miniMultiSet
{
return multisetList.begin() ;
}
template
miniMultiSet
{
return multisetList.end() ;
}
template
miniMultiSet
{
return multisetList.end() ;
}
#endif
- 多重集合set 的list实现详解
- list与set集合详解
- Python 使用list实现简单的集合set
- 集合collection的实现类List,set以及map
- 集合(二)Collection的实现List和Set
- 集合 List、Set、Map 的区别和实现原理
- Java集合类详解 set、list、map、
- JAVA集合map、list、set详解
- set集合和 list集合 的区别
- List、Set集合Map集合的遍历
- set集合和list集合的区别
- set集合和list集合的区别
- Set集合的实现
- Set集合、list集合
- 【java】java集合list与set、map集合的区别详解
- 【java】java集合list与set、map集合的区别、用法详解
- Java Set集合的详解
- Python的set集合详解
- firewall
- MTK task (原文 http://blog.csdn.net/yanwuxufeng/archive/2010/07/24/5762361.aspx)
- linux进程间通信之消息队列
- 面向未来
- Eucalyptus详解
- 多重集合set 的list实现详解
- 大三生活
- 文件浏览样式的修改
- struts2的另类ajax使用
- Windows-to-Linux roadmap: Part 2. Console crash course
- Counting Sequences
- ubuntu10.04,编译xen 4.01
- 生活随笔:打打蛤蟆
- 关于 符号表加载错误