//定义一个容器变量
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);
// 返回参数V在Map中匹配的所有键的集合
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());