Cocos2dx中类库中Map<K,V>容器的使用

//定义一个容器变量

Map<std::string, Node*> map1;

// empty函数返回Map容器是否为空

log("%s",map1.empty() ? "map1容器为空!":"map1容器不为空!");

 

// size函数返回Map容器中元素的数量

log("map1.size: %i",(int)map1.size());

log("bucket_count = %d", static_cast<int>(map1.bucketCount()));

for (int i = 1; i <= 10; i++)

{

auto node = Node::create();

node->setTag(i);

// insert函数向容器中插入新元素

map1.insert(StringUtils::toString(i), node);//const K& key, V object

}

log("----- Map容器中所有key ---------");

// keys函数获得Map容器的所有键,遍历打印结果并不是插入顺序显示,因为Map是无序的

auto keys = map1.keys();

for (const auto& key : keys) {

log("key = %s", key.c_str());

    }

// getRandomObject函数获得随机的对象

log("getRandomObject: %i",map1.getRandomObject()->getTag());

log("------ 根据值查找key --------");

// at函数根据键查找返回值

auto node10Key = map1.at("10");

map1.insert("100", node10Key);

map1.insert("101", node10Key);

map1.insert("102", node10Key);

// 返回参数VMap中匹配的所有键的集合

auto keysForObject = map1.keys(node10Key);

for (const auto& key : keysForObject)

{

log("key = %s", key.c_str());

}

// find函数根据key查找返回对应的迭代器,迭代器中包含了键和值

auto nodeToFind = map1.find("100");

log("first: %s",nodeToFind->first.c_str());

log("second: %i",nodeToFind->second->getTag());

// erase函数删除容器中的元素

log("------ erase之后 --------");

// 根据key删除

map1.erase("1");

// 根据迭代器删除

map1.erase(map1.find("2"));

// 根据键集合删除

std::vector<std::string> itemsToRemove;

itemsToRemove.push_back("3");

itemsToRemove.push_back("4");

itemsToRemove.push_back("5");

map1.erase(itemsToRemove);

for (const auto& key : map1.keys())

{

log("key = %s", key.c_str());

}

// clear函数清空容器

map1.clear();

log("------ clear之后 --------");

log("%s",map1.empty() ? "map1容器为空!":"map1容器不为空!");

// size函数返回Map容器中元素的数量

log("map1.size: %i",(int)map1.size());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值