繁体   English   中英

C ++中的Python样式字典?

[英]Python-style dictionary in C++?

这里是C ++的初学者。 想知道是否有一个类似于Python中的字典的函数。 我正在寻找一个具有分配值的键列表,这些键值可以由这样的数字指针轻松引用:myDict ['插入键的位置']。 哦,插入的数据将是字符串。 提前致谢。

我想用它们手中的硬币数量(欺骗)来制作一个名称字典作为键。 这将全部用cin输入。

通常是这样的

std::map<std::string, std::string>

要么

std::unordered_map<std::string, std::string>

但是请务必仔细研究界面。 例如,元素访问和检查键是否存在可能不具有您期望的语法,而看似熟悉的语法可能会导致意外的事情。

std::mapstd::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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM