[英]Python-style dictionary in C++?
这里是C ++的初学者。 想知道是否有一个类似于Python中的字典的函数。 我正在寻找一个具有分配值的键列表,这些键值可以由这样的数字指针轻松引用:myDict ['插入键的位置']。 哦,插入的数据将是字符串。 提前致谢。
我想用它们手中的硬币数量(欺骗)来制作一个名称字典作为键。 这将全部用cin输入。
通常是这样的
std::map<std::string, std::string>
要么
std::unordered_map<std::string, std::string>
但是请务必仔细研究界面。 例如,元素访问和检查键是否存在可能不具有您期望的语法,而看似熟悉的语法可能会导致意外的事情。
std::map
和std::unordered_map
在许多情况下的行为非常相似。 但是,它们是不同的数据结构, std::map
使用树实现,而std::unordered_map
使用哈希表。 由于python dict
是作为哈希表实现的,因此std::unordered_map
更相似; 它具有相同的渐近性质。
使用std::unordered_map
非常基本的示例:
#include <iostream>
#include <string>
#include <unordered_map>
int main()
{
// declare and initialize the "dictionary"
std::unordered_map<std::string, std::string> my_dict = {{"cat", "dog"}, {"apple", "book"}};
// insert values
my_dict.insert(std::make_pair("horse", "tree"));
my_dict["pig"] = "sky";
for (auto it=my_dict.begin(); it != my_dict.end(); it++)
{
std::cout << "key : " << it->first << " value " << it->second << std::endl;
}
// .count() to check if elements exists in unordered_map
std::cout << my_dict.count("cat") << std::endl;
std::cout << my_dict.count("wolf") << std::endl;
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.