CCDictionary

简介: 简介 CCDirtionary使用UTHash实现的。老版本的CCMutableDictionary使用STL实现,但是已经被移除了。而且CCDictionary也是最近才被添加进来的。


简介

CCDirtionary使用UTHash实现的。老版本的CCMutableDictionary使用STL实现,但是已经被移除了。而且CCDictionary也是最近才被添加进来的。由于CCDictionary没有使用C++的模板特性了,因此可以轻松的绑定到script。

关键字类型

CCDictionary支持两种类型的关键字,一个是std::string,一个是int。一个CCDictionary实例对象只支持唯一的关键字。所以在你调用“setObject”方法的时候,你需要确认一下。

遍历

我们移除了之前使用beginendnext来遍历整个字典的方法。现在我们实现了CCDICT_FOREACH方法来遍历整个字典。而且使用CCDICT_FOREACH的方式和使用CCARRAY_FOREACH的方式非常类似。

下面代码就是举例说明怎么样遍历CCDictionary:

    CCDictElement* pElement = NULL;

    CCDICT_FOREACH(theDict, pElement)
    {
        CCObjectSubClass* pSubClassObj = (CCObjectSubClass*)pElement->getObject();
        // 你也可以得到当前key,但是你需要确定key的类型。
        std::string oneStrKey = pElement->getStrKey(); // 假如key的类型是string
        // int oneIntKey = pElement->getIntKey(); // 假如有key的类型是integer

        // 下面就可以使用上面.pSubClassObj对象做一些操作了

    }

CCDictionary::allkeys的方法被保留了,你也可以使用这个来遍历整个字典,但是我们强烈不建议你这样做。因为CCDICT_FOREACH的性能比使用allkeys的方法好很多。假如你想要在lua中遍历整个CCDictionary,你就不能使用CCDICT_FOREACH宏了,这种情况下,就只有使用老办法了。

相关文章
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的大学生校园招聘网附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的大学生校园招聘网附带文章和源代码部署视频讲解等
43 8
|
5月前
|
消息中间件 存储 对象存储
消息队列 MQ产品使用合集之对于RocketMQ Proxy GRPC消息重发,该怎么解决
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
|
6月前
|
算法
【动态规划刷题 18】(hard)回文子串&& (hard)最长回文子串
【动态规划刷题 18】(hard)回文子串&& (hard)最长回文子串
|
机器学习/深度学习 存储 算法
连续 Hopfield 网络-1| 学习笔记
快速学习连续 Hopfield 网络-1。
218 0
连续 Hopfield 网络-1| 学习笔记