`
buerkai
  • 浏览: 170303 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

简单实现一个hashtable---------在cocos2d-x中存放全局变量

 
阅读更多

#include <map>
#include <iostream>

static std::map<std::string,std::string> datamap;

/*
*@description: 存入一个string类型的数据
*@author: buerkai.iteye.com
*@fullName: put
*@param1: key
*@param2: value
*/
static void put(std::string key,std::string value)
{
if(datamap.find(key)!=datamap.end()){
datamap.find(key)->second=value;
}else{
datamap.insert(make_pair(key,value));
}

}


/*
*@description: 取一个string类型的数据,没有返回为空串
*@author: buerkai.iteye.com
*@fullName: get
*@param1: key
*/
static std::string get(std::string key)
{
if(datamap.find(key)!=datamap.end()){
return datamap.find(key)->second;
}else{
return "";
}
}


/*
*@description: 删除string类型的数据
*@author: buerkai.iteye.com
*@fullName: deleteValue
*@param1: key
*/
static void deleteValue(std::string key){
if(datamap.find(key)!=datamap.end()){
datamap.erase(key);
}
}

/*
*@description: 存入一个Int类型的数据
*@author: buerkai.iteye.com
*@fullName: put
*@param1: key
*@param2: value
*/
static void putInt(std::string key,int value)
{
char tt[10];
put(key,itoa(value,tt,10));
}

/*
*@description: 取一个Int类型的数据,没有返回0
*@author: buerkai.iteye.com
*@fullName: getInt
*@param1: key
*/
static int getInt(std::string key)
{
std::string dd=get( key);
if(dd==""){
return 0;
}else{
return std::atoi(dd.c_str());
}
}

/*
*@description: 存入一个Float类型的数据
*@author: buerkai.iteye.com
*@fullName: putFloat
*@param1: key
*@param2: value
*/
static void putFloat(std::string key,float value)
{
char tmpstr[32];
memset(tmpstr,'\0',32);
    sprintf(tmpstr,"%f",value);
put(key,std::string(tmpstr));
}


/*
*@description: 取一个Float类型的数据,没有返回0.0f
*@author: buerkai.iteye.com
*@fullName: getFloat
*@param1: key
*/
static float getFloat(std::string key)
{
std::string dd=get( key);
if(dd==""){
return 0.0f;
}else{
return std::atof(dd.c_str());
}
}



/*
*@description: 存入一个bool类型的数据
*@author: buerkai.iteye.com
*@fullName: putBool
*@param1: key
*@param2: value
*/
static void putBool(std::string key,bool value)
{
std::string tt="0";
if(value)
{
tt="1";
}
put(key,std::string(tt));
}



/*
*@description: 取一个bool类型的数据,没有返回false
*@author: buerkai.iteye.com
*@fullName: getBool
*@param1: key
*/
static bool getBool(std::string key)
{
std::string dd=get( key);
if(dd==""||dd=="0"){
return 0;
}else if(dd=="1"){
return 1;
}
return 0;
}



前一段时间,在做小游戏的时候,将游戏的全局变量放在一个gamedata.h文件中,每次include这个文件的时候,里面定义的全局变量就重新初始化了,为了解决这个问题,简单模仿了一个JAVA中的hashtable。可以放在单列类中,存放游戏中的全局变量,以上函数已经过测试,放心使用吧。

转载请注明出处:http://buerkai.iteye.com

分享到:
评论

相关推荐

    开源项目-spion-hashtable-latencies.zip

    开源项目-spion-hashtable-latencies.zip,Improved latency in Go's next version (1.8) at spion/hashtable-latencies

    my-hashtable-master.zip

    C语言实现 哈希表 11111111111111111111111111111111111111111111111111111111111111111111111111111111111

    哈希表-使用C++实现的哈希表-HashTable.zip

    哈希表是一种高效的数据结构,它通过特定的算法——哈希函数,将任意大小的键(key)映射到一个固定大小的数组中,从而实现快速查找、插入和删除操作。在C++中,虽然标准库没有直接提供哈希表的实现,但我们可以...

    HashTable的java实现

    如果多个键被哈希到同一个位置,它们会在同一个链表中形成链接,解决了键冲突的问题。链表法的优点是它可以处理任意数量的冲突,但缺点是在链表过长时,查找效率会下降。 接下来,我们讨论开放地址寻址(Open ...

    WinFormHashTable最简单用法,.net hashtable ,hashtable ,hashtable用法

    下面是一个简单的WinForm应用中使用Hashtable的例子: ```csharp public partial class MainForm : Form { private Hashtable controlsData; public MainForm() { InitializeComponent(); controlsData = ...

    Hashtable的用法---马克-to-win Java视频

    Hashtable的用法---马克-to-win Java视频哈希表的详细介绍

    hashtable-lab-Soulhae:GitHub课堂创建的hashtable-lab-Soulhae

    ./a.out在本实验中,我们将实现一张地图。 为此,我们将使用在文件hashmap.c中找到的以下结构(哈希表) struct Pair { char * key; void * value;};struct HashMap { Pair ** buckets; long size; //cantidad de ...

    哈希表的建立与运用C语言实现哈希表的建立与运用C语言实现

    在C语言中,实现哈希表需要理解其基本原理和步骤,并熟练掌握C语言的动态内存管理和指针操作。 哈希函数是哈希表的核心,它的目标是将键转化为数组下标,通常要求哈希函数尽可能均匀分布,避免冲突。常见的哈希函数...

    plsql-hashtable-开源

    PLSQL-Hashtable 是一个开源项目,它为 Oracle 数据库的 PL/SQL 语言提供了一种实现哈希表的方法。哈希表是一种数据结构,通过使用哈希函数将键(key)映射到数组的索引位置,从而实现快速的数据查找、插入和删除...

    哈希表hashtable实现

    在本篇文章中,我们将深入探讨哈希表的实现,特别是基于C语言的简单实现,参考文件"hashtable.c"和"hashtable.h"。 1. 哈希函数:哈希表的核心是哈希函数,它将输入(键或关键字)转换为数组索引。一个好的哈希函数...

    C#-Hashtable应用

    在C#中创建一个Hashtable非常简单,只需要调用其构造函数即可。例如: ```csharp Hashtable myHashTable = new Hashtable(); ``` 接下来,我们可以通过Add方法添加键值对到Hashtable中: ```csharp myHashTable.Add...

    hashtable购物车Session+Hashtable实现

    本文将详细介绍如何利用.NET Framework中的`Hashtable`类和`Session`对象来实现一个简单的购物车系统。 #### 二、Hashtable介绍 在.NET Framework中,`Hashtable`是`System.Collections`命名空间提供的一种数据结构...

    hashtable-lab-vicho-bece:GitHub Classroom创建的hashtable-lab-vicho-bece

    ./a.out在本实验中,我们将实现一张地图。 为此,我们将使用在文件hashmap.c中找到的以下结构(哈希表) struct Pair { char * key; void * value;};struct HashMap { Pair ** buckets; long size; //cantidad de ...

    hashtable-lab-eyl-lana:GitHub Classroom创建的hashtable-lab-eyl-lana

    在本实验中,我们将实现一张地图。 为此,我们将使用在文件hashmap.c中找到的以下结构(哈希表) struct Pair { char * key; void * value; }; struct HashMap { Pair ** buckets; long size; //cantidad de ...

    hashtable-lab-suazo-jara:GitHub Classroom创建的hashtable-lab-suazo-jara

    ./a.out在本实验中,我们将实现一张地图。 为此,我们将使用在文件hashmap.c中找到的以下结构(哈希表) struct Pair { char * key; void * value;};struct HashMap { Pair ** buckets; long size; //cantidad de ...

    hashtable-lab-nicobrevis:GitHub Classroom创建的hashtable-lab-nicobrevis

    ./a.out在本实验中,我们将实现一张地图。 为此,我们将使用在文件hashmap.c中找到的以下结构(哈希表) struct Pair { char * key; void * value;};struct HashMap { Pair ** buckets; long size; //cantidad de ...

    hashtable-lab-OkitaDev:GitHub Classroom创建的hashtable-lab-OkitaDev

    在本实验中,我们将实现一张地图。 为此,我们将使用在文件hashmap.c中找到的以下结构(哈希表) struct Pair { char * key; void * value; }; struct HashMap { Pair ** buckets; long size; //cantidad de ...

    HashMap和HashTable的区别和不同

    `HashTable`通过同步每个方法的执行来实现这一点,即在执行`HashTable`的任何方法时,都会锁定整个对象,确保同一时间只有一个线程能够访问或修改`HashTable`。 - **HashMap**: 相较之下,`HashMap`不是一个线程...

    在J2ME环境下把JSON解析为Hashtable

    在这个类中,`parse()`方法接收一个JSON字符串并返回一个Hashtable。`parseValue()`方法用于处理JSON中的基本类型(如字符串、数字)和复杂类型(如对象、数组)。`parseArray()`方法则用于解析JSON数组,将其转换为...

    使用哈希表Hashtable填充ListBox

    在.NET框架中,`Hashtable`是System.Collections命名空间下的一个类,它实现了键值对(Key-Value Pair)存储,允许通过键来快速访问对应的值。在Windows Forms应用程序中,`ListBox`控件常用于显示一系列可选项目,...

Global site tag (gtag.js) - Google Analytics