【发布时间】:2015-10-31 02:47:30
【问题描述】:
所以我知道我可以在构造时将数组的每个值设置为“幻数”(在本例中为幻字符串);
string * myArray[] = {"foo", "bar", "baz"};
如果我可以声明我的数组,这将是有用的;
string * myArray[100];
然后(在 if 语句中)设置它的值;
myArray = {"foo", "bar", "baz"};
(实际的数组将包含大约 30 个魔术字符串,所以我不想一次全部分配一个)
我知道幻数(或幻数)不好。然而,我正在使用的系统是 CERN 的根,它充满了有趣的怪癖,我宁愿不再浪费时间寻找更简洁的方法。所以为了不让perfect become the enemy of the good 我会使用幻数。
这里最快的选择是什么?
编辑;接受的答案适用于 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
}
【问题讨论】:
-
为什么不使用向量
? -
为什么指向字符串
-
可以,但这有帮助吗?我想我们仍然不能像
={"foo", "bar", "baz"}那样设置? -
那不编译你的意思是
std::string myArray[] = {"foo", "bar", "baz"};? -
如果需要静态数组,请使用
std::array,如果需要动态数组,请使用std::vector。 C++ 中的原始数组不再有用了。
标签: c++ arrays magic-numbers