【问题标题】:Assigning consecutive integers to a list of variables将连续整数分配给变量列表
【发布时间】:2021-02-15 12:19:43
【问题描述】:

如何以更紧凑的形式重写以下内容?

constexpr unsigned int dog=1;
constexpr unsigned int cat=2;
constexpr unsigned int elephant=3;
...
constexpr unsigned int zebra=1000;

理想情况下,我想要类似的东西

dog,cat, elephant, ..., zebra = range(1,1000)

【问题讨论】:

  • 只写一个函数?
  • 最好解释一下您要使用这些变量解决什么问题,而不是您当前尝试如何解决它。您不能“生成”具有不同名称的变量。但是可能还有其他方式可以说“给定 3 个字母,计算一个数字”确实有效。
  • 变量名不一定是连续的。我在 sn-p 中更清楚地说明了这一点。
  • 使用std::arraystd::map。或 42。这就是您问题的确切答案。
  • 或者你可以通过使用enum来保存一些字符。我不知道这是否能解决你的问题,因为你不会告诉我们它是什么。

标签: c++ variable-assignment


【解决方案1】:

将连续整数分配给变量列表

如果它们不能变化,它们就不是真正的变量。

你可以替换

constexpr unsigned int dog=1;
constexpr unsigned int cat=2;
constexpr unsigned int elephant=3;
...
constexpr unsigned int zebra=1000;

enum Animal: unsigned {
  dog=1,
  cat,
  elephant,
  ...
  zebra
};

如果这就是你想要的。

【讨论】:

  • 只是想评论一下为什么这正是我想要的。枚举声明允许我控制整数起始值并控制整数类型。非常感谢!
【解决方案2】:

你能解释一下你想做什么吗?如果你试图枚举一个列表,你应该使用 enum 代替。 https://en.cppreference.com/w/cpp/language/enum

【讨论】:

  • 请不要使用答案来要求澄清问题
  • 我已经请求保证并回答了,我亲爱的朋友。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
相关资源
最近更新 更多