Так что я знаю, что могу установить каждое значение массива на «магическое число» (в данном случае магическую строку) во время построения типа;Установите все значения существующего массива на «магические числа»
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
}
почему бы не использовать вектор? –
marom
Почему указатели на строки –
Не могли бы это сделать, но это поможет? Мы все еще не можем установить как '= {" foo "," bar "," baz "}' Я думаю? – Jekowl