2016-03-08 3 views
0

У меня есть серия массивов, на которые я ссылаюсь в большом операторе if для назначения ниже. Я хотел бы косвенно ссылаться на них, если это возможно?C++ Косвенное присвоение значения массива?

  if (m == 1) EleN[CorrPos] = S1N[ID]; 
    else if (m == 2) EleN[CorrPos] = S2N[ID]; 
    else if (m == 3) EleN[CorrPos] = S3N[ID]; 
    else if (m == 4) EleN[CorrPos] = S4N[ID]; 
    else if (m == 5) EleN[CorrPos] = S5N[ID]; 
    else if (m == 6) EleN[CorrPos] = S6N[ID]; 
    else if (m == 7) EleN[CorrPos] = S7N[ID]; 
    else if (m == 8) EleN[CorrPos] = S8N[ID]; 
    else if (m == 9) EleN[CorrPos] = S9N[ID]; 
    else if (m == 10) EleN[CorrPos] = S10N[ID]; 

Можно ли косвенным образом назвать это косвенно каким-то образом?

Elen [CorrPos] = @ "S" + т + "N [ID]"

+1

Не могли бы вы объяснить, что вы намерены сделать немного больше? В C/C++ нет @. Что такое CorrPos? По ряду массивов вы имеете в виду массив указателей массива? – xvan

+0

Что такое «косвенно»? –

+0

Извините, CorrPos - это просто имя целочисленного индекса для EleN, ничего особенного –

ответ

1

Вы можете использовать массив указателей на S массивов, то можно просто сделать, например,

EleN[CorrPos] = S_Array[m - 1][ID]; // -1 since array-indexes are zero-based 
+1

Вектор или карта также будут вариантами. –

+0

Спасибо, неужели мне еще нужно настроить большой условный оператор if, чтобы настроить ссылки указателя на S1N, S2N и т. Д.? –

+0

@NickJacobi Нет, вы просто инициализируете 'S_Array' (в моем примере) один раз. Как 'SomeType * S_Array [10] = {S1N, S2N, ...}' –

Смежные вопросы