gpt4 book ai didi

javascript - JS 对象、Python 字典和 C++ 结构之间有什么区别?

转载 作者:行者123 更新时间:2023-12-02 10:32:45 26 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

2年前关闭。




Improve this question




这个post解释了 Python 字典和 JavaScript 对象之间的差异/相似之处。但是我想知道 JS object 之间的差异/相似之处和 Python dict到 C++ struct .这 3 种数据类型在它们各自的语言中似乎彼此等价,但是我认为使用它们中的每一个的应用程序都有更多的细微差别。否则将不需要其他数据结构,例如 C++ map .

最佳答案

C++ 没有内置的等效数据类型。

C++ 结构(只是具有默认公共(public)成员可见性的类)在编译时确定其成员的名称和类型。例如,对于 C++ 结构/类,您 不能在运行时执行这些操作:

  • 询问一个对象它有哪些成员(反射)
  • 询问对象是否有具有特定名称的成员
  • 查找具有给定名称的对象成员
  • 创建新成员
  • 更改现有成员存储的值的类型

  • 所有这些对于 JavaScript 对象和 Python 字典都是可能的,但对于 C++ 结构/类,这些都不可能。

    在 vanilla C++ 中,您可能拥有的最接近的东西是 std::map<std::string, void *>然后您必须手动管理每个值​​的内存,并且能够以某种方式确定存储了哪种值。

    有一些 variant types其他人为 C++ 编写的。例如, boost's variant type可以工作,但您仍然必须提供在编译时需要使用的所有类型的列表。使用这种值类型,您可以拥有 std::map<std::string, boost::variant<list, of, types, here>>它的功能类似于 JavaScript 对象或 Python 字典,但具有一组有限的可接受类型。

    但是,通常情况下,您不需要 C++ 中的这种动态性,它具有处理这种事情的其他工具。

    关于javascript - JS 对象、Python 字典和 C++ 结构之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61661447/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com