PDA

Просмотр полной версии : [Вопрос] Switch или Двумерный массив?



StevenH
26.02.2016, 20:41
Всем привет. Что же лучше, свич или двумерный массив?

Switch:


new nation[7];
switch(...)
{
case 1: nation = "текст1";
case 2: nation = "текст2";
case 3: nation = "текст3";
}


или Двумерный массив:


// в начале
new nationality_name[3][7] =
{
{"Текст1"},
{"Текст2"},
{"Текст3"}
}

DeimoS
26.02.2016, 20:50
Ну в первом случае ты создаёшь массив и из памяти сервера записываешь строки в этот самый массив.
Во втором случае ты записываешь данные в память сервера и работаешь уже напрямую с памятью
Я бы выбрал второй

Daniel_Cortez
27.02.2016, 14:40
Я бы тоже отдал предпочтение второму варианту. Доступ к элементу массива по идее должен быть эффективнее, чем к 3 разным значениям через switch, да и дополнительный буфер для копирования строкового значения не нужен.
Главное не забывать проверять индекс, чтобы не допустить выхода за пределы массива.
Кстати, тот двумерный массив необязательно делать глобальным, можно его и внутри функции объявить, только нужно использовать для объявления ключевое слово static вместо new, чтобы содержимое массива, которое уже есть в секции данных, не копировалось лишний раз в стек.


stock PrintSomeText(x)
{
static const strings[3][] =
{
{"Sample text 1"},
{"Sample text 2"},
{"Sample text 3"}
};
if ((x < 0) || (x > sizeof(strings) - 1))
return 0;
print(strings[x]);
return 1;
}

Впрочем, та проверка значения в X не обязательна. Если вы уверены, что X в данном примере не может принимать никаких значений кроме 0, 1 или 2, то проверку индекса можно опустить.