Доступ к членам структуры по типу доступа к членам массива. - страница 2

 
Vladimir Pastushak:

В структуре 100 членов читать удобнее переменные. В массиве можно просто потеряться.

Ну, если так - то, увы, при выводе следует выводить на экран вот именно что почленно.

Тебе ж тогда надо не просто строки, а пары "Название поля - значение поля". А при простом выводе по индексу - у тебя будет "Индекс поля - значение поля". Лично я - запросто могу забыть среди такого количество полей, какое и за что отвечает.

Так что я бы просто "тупо вывел" бы все сто полей с названиями. Хотя, это и не больно элеганто выглядит в коде.

 

Использовать массив, а что бы не потеряться, объявить константы:

#define ЭТО_ЧТО_ТО 0
#define ЭТО_ЧТО_ТО_ДРУГОЕ 1
string zzz[2];

zzz[ЭТО_ЧТО_ТО]="lkasdjfklasdj";
zzz[ЭТО_ЧТО_ТО_ДРУГОЕ]="powieweru";
 
 
Dmitry Fedoseev:

Использовать массив, а что бы не потеряться, объявить константы:

Или нумерованные списки enum

 
Хорошая тема, я так понимаю, решения нет?
 
Sergey Likho:
Хорошая тема, я так понимаю, решения нет?

А зачем оно нужно?

 
Sergey Likho:
Хорошая тема, я так понимаю, решения нет?

Так ведь тут было сразу несколько решений: 1, 2 и 3. На мой взгляд, в совокупности они описывают 99% случаев. Для 100% универсального решения нет, но, думаю, оно и не требуется. Чуток подумать и все можно завернуть в комбинацию описанных решений, даже если используется string (можно унифицировать большинство задач).

Доступ к членам структуры по типу доступа к членам массива.
Доступ к членам структуры по типу доступа к членам массива.
  • 2019.06.09
  • www.mql5.com
Могу ошибаться но где то видел что значения структуры можно получить по типу получения данных из массива. Есть большая структура на 60 членов...
 

Я бы сделал так:

struct str
  {
   string            a0;
   string            a1;
   string            a2;

   void              str()
     {
      a0="1 element";
      a1="2 element";
      a2="3 element";
     }

   string            Arr(int i)
     {
      if(i>=0 && i<3)
        {
         if(i==0)
            return a0;
         if(i==1)
            return a1;
         if(i==2)
            return a2;
        }
      return "No element";
     }
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   str ArrStr;
   for(int i=0; i<3; i++)
      Print(ArrStr.Arr(i));
  }

 

 
Vladimir Pastushak:

В структуре 100 членов читать удобнее переменные. В массиве можно просто потеряться.

можете использовать вместо структуры map (dictionary) с ключом и значением типа string
 
TheXpert:
можете использовать вместо структуры map (dictionary) с ключом и значением типа string

Не заглядывал в стандартную библиотеку. Там уже мапы есть? Логично, что и и вектора имеются. Тогда это повод для меня пересмотреть к ней свое отношение.

Причина обращения: