CCSet(内部std::set实现 成员std::set<CCObject *> *m_pSet count addObject containsObject begin anyObject)
来源:互联网 发布:淘宝快速冲销量的方法 编辑:程序博客网 时间:2024/05/01 22:37
#ifndef __CC_SET_H__
#define __CC_SET_H__
#include <set>
///////////////////////////
STL 对这个序列可以进行查找,插入删除序列中的任意一个元素,而完成这些操作的时间同这个序列中元素个数的对数成比例关系,并且当游标指向一个已删除的元素时,删除操作无效。而一个经过更正的和更加实际的定义应该是:一个集合(set)是一个容器,它其中所包含的元素的值是唯一的。这在收集一个数据的具体值的时候是有用的。集合中的元素按一定的顺序排列,并被作为集合中的实例。一个集合通过一个链表来组织,在插入操作和删除操作上比向量(vector)快,但查找或添加末尾的元素时会有些慢。具体实现采用了红黑树的平衡二叉树的数据结构。
创建一个空的set
1: set<int> s0 ;
创建一个带大于比较器的set, 默认是小于比较器less<int>
1: set<int, greater<int>> s1 ;
自定义比较函数
以类为比较器
1: struct classcmp
2: {3: bool operator()(const int& lhs, const int& rhs)4: {5: return lhs < rhs ;
6: }7: };8:9: int main(void)10: {11: set<int, classcmp> s5 ;
12:13: system("pause") ;
14: return 0 ;
15: }
以函数指针为比较器
1: bool fncmp(int lhs, int rhs)2: {3: return lhs < rhs ;
4: }5:6: int main(void)7: {8: bool(*fn_pt)(int, int) = fncmp ;9: set<int, bool(*)(int, int)> s1(fn_pt) ;10:11: system("pause") ;
12: return 0 ;
13: }
由于set本身是有序的,所以不提供排序函数。
///////////////////////////
#include "CCObject.h"
NS_CC_BEGIN
typedef std::set<CCObject *>::iterator CCSetIterator;
class CC_DLL CCSet : public CCObject
{
public:
CCSet(void);
CCSet(const CCSet &rSetObject);
virtual ~CCSet(void);
static CCSet * create();
CCSet * CCSet::create()
{
CCSet * pRet = new CCSet();
if (pRet != NULL)
{
pRet->autorelease();
}
return pRet;
}
//Return a copy of the CCSet, it will copy all the elements.
CCSet* copy();
CCSet* mutableCopy();
int count();//ccset 中元素个数
void addObject(CCObject *pObject);//add into set. 会retain
void removeObject(CCObject *pObject);//remove
void removeAllObjects();//remove 所有元素
bool containsObject(CCObject *pObject);//查看是否包含和参数相同的object
bool CCSet::containsObject(CCObject *pObject)
{
return m_pSet->find(pObject) != m_pSet->end();
}
CCSetIterator begin();//返回首元素迭代器
CCSetIterator end();//返回末元素迭代器
CCObject* anyObject();//返回首元素 如果没有返回null
virtual void acceptVisitor(CCDataVisitor &visitor);
void CCSet::acceptVisitor(CCDataVisitor &visitor)
{
visitor.visit(this);
}
private:
std::set<CCObject *> *m_pSet; //std::set
};
NS_CC_END
#endif // __CC_SET_H__
- CCSet(内部std::set实现 成员std::set<CCObject *> *m_pSet count addObject containsObject begin anyObject)
- std::Set
- std::set
- std::set
- std::set
- std::set
- std::map&&std::set
- std::set成员函数及简要使用方法
- std::map与std::set
- std::set||std::deque||std::map
- std::set用法
- std::set和multiset
- std::set 用法
- std::set 使用
- std map set 区别
- std::set iterator
- std::set 使用总结
- C++容器--std::set
- uva 147 Dollars 简单dp
- Hello,Wrold之环境搭建
- 未完待续02
- curl
- 十分经典的批处理教程
- CCSet(内部std::set实现 成员std::set<CCObject *> *m_pSet count addObject containsObject begin anyObject)
- Activity切换动画--模糊、水波纹、折叠效果 ...
- CCObject(m_uReference(被引用次数) m_uAutoReleaseCount(加入释放池次数) release retain acceptVisitor)
- cocos2dx常见的46中+22中动作
- 使用U盘安装Ubuntu14.04操作系统
- eclipse 代码补全
- 仿美团弹出分类选择框
- CCNS(函数库CCPointFromString CCRectFromString CCSizeFromString 参数是字符串"{x,y}"、{{x,y},{w, h}}、"{w, h}")
- 雷军:我向阿里学到了三点,这是创业成功的核心