c++中map与set容器实例
来源:互联网 发布:B2c php 开源 编辑:程序博客网 时间:2024/06/07 11:57
class MTNumbelApply
{
public:
MTNumbelApply( char m_max=192,char m_min=100,char t_max=192,char t_min=1):MaxMcuNum(m_max),MinMcuNum(m_min),
MaxTerminalNumber(t_max),MinTerminalNumber(t_min)
{
if( (m_max>192) || ( m_max< 1 ) )
MaxMcuNum=192;
if( (m_min>192) || ( m_min< 1 ) )
MinMcuNum=1;
if( (t_max>192) || ( t_max< 1 ) )
MaxTerminalNumber=192;
if( (t_min>192) || ( t_min< 1 ) )
MinTerminalNumber=1;
}
~MTNumbelApply()
{
set<char>* Ptr;
map<char,set<char>* >::iterator iter_map=McuTerminalSet.end();
for(iter_map=McuTerminalSet.begin(); iter_map!=McuTerminalSet.end(); iter_map++)
{
Ptr= iter_map->second;
if( Ptr!=NULL)
delete Ptr;
}
}
char ApplyMcuNumber(void)
{
set<char>::iterator iter=McuSet.end();
for( char i=MinMcuNum;i< MaxMcuNum;i++)
{
//McuSet.find( McuSet.begin(),McuSet.end(),i )
iter=McuSet.find( i );
if( iter==McuSet.end() )
{
McuSet.insert( i );
TerminalSetPtr= new set<char>;
if( NULL)
{
TerminalSetPtr->clear();
McuTerminalSet.insert(pair<char,set<char>*>(i,TerminalSetPtr) );
TerminalSetPtr=NULL;
return i;
}
else
return -1;
}
}
return -1;
}
char RegisterMcuNumber( char Mcu )
{
if( isMcuValid( Mcu ) ==false )
return -1;
set<char>::iterator iter=McuSet.end();
iter=McuSet.find( Mcu );
if( iter==McuSet.end() )
{
TerminalSetPtr= new set<char>;
if( NULL)
{
TerminalSetPtr->clear();
McuTerminalSet.insert(pair<char,set<char>*>(Mcu,TerminalSetPtr) );
TerminalSetPtr=NULL;
return Mcu;
}
else
return -1;
}
else
{
return -1;
}
}
char RelaseMcuNumber( char Mcu)
{
if( isMcuValid( Mcu ) ==false )
return -1;
set<char>::iterator iterator_set=McuSet.end();
map<char,set<char>* >::iterator iter_map=McuTerminalSet.end();
iterator_set=McuSet.find( Mcu );
if( iterator_set !=McuSet.end() )
{
McuSet.erase( iterator_set );
iter_map=McuTerminalSet.find(Mcu);
if( iter_map!=McuTerminalSet.end() )
{
TerminalSetPtr=iter_map->second;
if( TerminalSetPtr!=NULL)
delete TerminalSetPtr;
McuTerminalSet.erase(Mcu);
}
return Mcu;
}
else
{
return -1;
}
}
char ApplyTerminalNumber( char Mcu)
{
if( isMcuValid( Mcu ) ==false )
return -1;
if( McuExist(Mcu)==false )
return -1;
set<char>::iterator iter;
set<char>* Ptr;
map<char,set<char>* >::iterator iter_map=McuTerminalSet.end();
iter_map=McuTerminalSet.find( Mcu );
if( iter_map!=McuTerminalSet.end() )
{
Ptr=iter_map->second;
if( Ptr==NULL )
return -1;
for( char i=MinTerminalNumber;i< MaxTerminalNumber;i++)
{
iter= Ptr->end();
iter= Ptr->find(i);
if( iter == Ptr->end() )
{
Ptr->insert( i );
return i;
}
}
}
return -1;
}
char RegisterTerminalNumber( char Mcu, char TermiNumber)
{
if( isMcuValid( Mcu ) ==false )
return -1;
if( isTerminalValid( TermiNumber ) ==false )
return -1;
if( McuExist(Mcu)==false )
return -1;
set<char>::iterator iter;
set<char>* Ptr;
map<char,set<char>* >::iterator iter_map=McuTerminalSet.end();
iter_map=McuTerminalSet.find( Mcu );
if( iter_map!=McuTerminalSet.end() )
{
Ptr=iter_map->second;
if( Ptr==NULL)
return -1;
iter= Ptr->end();
iter= Ptr->find( TermiNumber );
if( iter==Ptr->end() )
{
Ptr->insert( TermiNumber );
return TermiNumber;
}
else
{
return -1;
}
}
return -1;
}
char RelaseTerminalNumber( char Mcu, char TermiNumber)
{
if( isMcuValid( Mcu ) ==false )
return -1;
if( isTerminalValid( TermiNumber ) ==false )
return -1;
if( McuExist(Mcu)==false )
return -1;
set<char>::iterator iter;
set<char>* Ptr;
map<char,set<char>* >::iterator iter_map=McuTerminalSet.end();
iter_map=McuTerminalSet.find( Mcu );
if( iter_map!=McuTerminalSet.end() )
{
Ptr=iter_map->second;
if( Ptr==NULL)
return -1;
iter= Ptr->end();
iter= Ptr->find( TermiNumber );
if( iter!=Ptr->end())
{
Ptr->erase(iter);
return TermiNumber;
}
}
return -1;
}
private:
int MaxMcuNum;
int MinMcuNum;
int MaxTerminalNumber;
int MinTerminalNumber;
set<char> McuSet;
map<char,set<char>* > McuTerminalSet;
set<char>* TerminalSetPtr;
bool McuExist( char Mcu)
{
set<char>::iterator iter=McuSet.end();
iter=McuSet.find( Mcu );
if( iter==McuSet.end() )
return false;
else
return true;
}
bool isMcuValid( char Mcu )
{
if( (Mcu>MaxMcuNum) || ( Mcu<MinMcuNum ) )
return false;
else
return true;
}
bool isTerminalValid( char Terminal )
{
if( (Terminal>MaxTerminalNumber) || ( Terminal<MinTerminalNumber ) )
return false;
else
return true;
}
};
上一篇:简单的c++回调函数设计方法(二)
下一篇:STL中map用法详解
- gameplay3d: light
- tn Requin
- I2C: 实例解析linux内核I2C体...
- where buy CHEAP MICHAEL KORS...
- where buy cheap michael kors...
- linux 常见服务端口
- 什么是shell
- linux socket的bug??
- linux的线程是否受到了保护?...
- 一个适用于windows和linux的抓...
- debian7系统与ATI X2300显卡...
- ubuntu sysklogd之配置文件介...
- 自己用的ubuntu环境搭建(一)...
- linux 学习心得
- 用户输入操作和数据的显示...
- c++中map与set容器实例
- set与map容器
- set与map容器
- set与map容器
- c++STL(四)关联容器set与map
- set容器与map容器基本操作
- 【C/C++】关联容器pair map set
- STL set 与 map 实例
- C++STL之关联容器【map】【set】
- set与map和pair容器
- map与set容器的使用
- java中容器介绍(List,Set,Map)
- C++STL中的set容器和map容器
- C/C++知识要点2——STL中Vector、Map、Set容器的实现原理
- cocos2dx使用map容器实例(C++)
- 实例讲解,set,multiset,map,multimap关联容器
- stl中map与set
- js中set与map
- 链接器工具错误和警告
- 链接器工具警告 LNK4098
- CentOS系统中开启SELINUX
- 简单的c++回调函数设计方法(一)
- 简单的c++回调函数设计方法(二)
- c++中map与set容器实例
- STL中map用法详解
- [c++ Primer中文第三版学习笔记]
- 第八章 域与生命期
- c++中string与int之间相互转换
- vc2005中DLL调用错误分析
- Boost学习之正则表达式--regex
- struct详解
- "stdafx.cpp"编译引起的C2859、C1083、LNK2001错误