【问题标题】:An array with elements containing sub-elements?包含子元素的元素的数组?
【发布时间】:2019-03-14 21:02:12
【问题描述】:

我对 C++ 语言相当陌生,我很好奇是否有适合我的项目。 Arrays 存储多个元素。正如我所相信的那样,dictionarys(或maps)存储项目和它们的 ID。还有收藏。但是,我对数组的树格式更感兴趣。我有很多项目需要存储在一个数组中,但每个项目还需要轻松引用子元素,如下所示:

    Jason
      /\
   Age  Weight
    |      |
   14     140

我很好奇是否有适合我需要的物品。正如您应该能够在上面的模型中看到的那样,我有一个项目 (Jason),有多个子模型(比如一棵树)。

我的程序随机创建具有这些属性(年龄、体重和姓名)的人,因此我无法为每个人指定一个特定的数组,因为我不知道会有多少人。有没有办法把这些树拿起来方便取用?

【问题讨论】:

  • std::map<std::string, std::map<std::string, some_numeric_type>> 听起来差不多。外部地图是人名与该人属性地图的配对。
  • struct person { std::string name; int age; int weight;}; std::vector<person> people;(缓存效率为赢)
  • 同意。如果每个人的属性都相同,那么struct 会胜出。
  • @NathanOliver 谢谢!我之前只听说过structs,不知道它们的用途。这将完美地满足我的需求。

标签: c++ arrays tree


【解决方案1】:

你可以只创建一个人结构。

struct Person
{
    std::string name;
    int age;
    int weight;
};

std::vector< Person > persons;
persons.emplace_back( Person() ); // with your variables;

如果您不想在阵列中包含完全相同的人, 请改用std::set(关联容器)。

【讨论】:

  • 另外,std::set 不是哈希列表。它是一个RB树。 std::unordered_set 是一个散列容器。
  • @NathanOliver 感谢您指出这一点。我实际上认为这是一样的。
猜你喜欢
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 2014-05-02
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
相关资源
最近更新 更多