c++ - 将现有数组的所有值设置为 "magic numbers"

标签 c++ arrays magic-numbers

所以我知道我可以在构造时将数组的每个值设置为“魔数(Magic Number)”(在本例中为魔数(Magic Number)字符串);

string * myArray[] = {"foo", "bar", "baz"};

如果我可以声明我的数组,那将会很有用;

string * myArray[100];

然后稍后(在 if 语句中)设置它的值;

myArray = {"foo", "bar", "baz"};

(实际数组将包含约 30 个魔术字符串,所以我不想一次将它们全部分配)

我知道魔术数字(或魔术字符串)不好。然而,我正在使用的系统是 CERN 的根,它充满了有趣的怪癖,我宁愿不再浪费时间寻找更简洁的方法。所以为了不让 perfect become the enemy of the good我将使用魔数(Magic Number)。

这里最快的选择是什么?

编辑;接受的答案对 c++11 非常有用。如果像我一样,您没有该选项,这里有一个非常讨厌但功能强大的解决方案。 (有感性的程序员请遮住眼睛。)

int numElements;
vector<char *> myArray;
if(someCondition){
  numElements = 3;
  string * tempArray[] = {"foo", "bar", "baz"}]
  for(int n = 0; n < numElements; n++){
    const char * element = (tempArray[n]);
    myArray.push_back(element);
  }
}else if(anoutherCondition){
//More stuff
}

最佳答案

尽管内置数组不允许聚合赋值,std::vector 允许您这样做:

vector<string> data;
if (someCondition) {
    data = {"quick", "brown", "fox"};
} else {
    data = {"jumps", "over", "the", "lazy", "dog"};
}

Demo.

这种方法有几个优点:

  • 语法简洁直观
  • 允许分配的聚合具有不同的长度
  • 分配给 std::vector 的资源会自动释放。

关于c++ - 将现有数组的所有值设置为 "magic numbers",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31881420/

相关文章:

java - setbounds 值是魔数(Magic Number)

c++ - 当我不需要 C++ 计算时如何忽略某些输入?

c++ - 指向 vector 的变量

c++ - 强制转换运算符可以是显式的吗?

c - 一个地址怎么可以有多个值呢?

python - 访问数组的多个元素

objective-c - 从类方法分配/释放指向数组的指针

c - C 中的魔数(Magic Number)

c++ - 使用 C++ 和 RAII 读取文件

linux - 如何避免 shell 中的魔数(Magic Number)?