Удаление таблицы из массива таблиц

 

Добрый день!

Есть массив из не одинаковых таблиц

struct BASE_ELEMENT
  {
   string            name;
   double            value;
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct TABLE
  {
   string            name;
   int               rev_idx;
   int               be_cnt;
   BASE_ELEMENT      elements[];
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct TABLES
  {
   int               tbl_cnt;
   TABLE             tables[];
  };

TABLES my_tables;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   my_tables.tbl_cnt=5;
   ArrayResize(my_tables.tables, my_tables.tbl_cnt); 
   for(int i=0;i<my_tables.tbl_cnt;i++)
     {
      switch(i)
        {
         case 0: 
           {
            my_tables.tables[i].name="1";
            my_tables.tables[i].rev_idx=12345;
            my_tables.tables[i].be_cnt = i+1;
            ArrayResize(my_tables.tables[i].elements,my_tables.tables[i].be_cnt);
           }
         break;
         case 1: 
           {
            my_tables.tables[i].name="2";
            my_tables.tables[i].rev_idx=123456;
            my_tables.tables[i].be_cnt = i+1;
            ArrayResize(my_tables.tables[i].elements,my_tables.tables[i].be_cnt);
           }
         break;
         case 2: 
           {
            my_tables.tables[i].name="3";
            my_tables.tables[i].rev_idx=123457;
            my_tables.tables[i].be_cnt = i+1;
            ArrayResize(my_tables.tables[i].elements,my_tables.tables[i].be_cnt);
           }
         break;
         case 3: 
           {
            my_tables.tables[i].name="4";
            my_tables.tables[i].rev_idx=123458;
            my_tables.tables[i].be_cnt = i+1;
            ArrayResize(my_tables.tables[i].elements,my_tables.tables[i].be_cnt);
           }
         break;
         case 4: 
           {
            my_tables.tables[i].name="5";
            my_tables.tables[i].rev_idx=123459;
            my_tables.tables[i].be_cnt = i+1;
            ArrayResize(my_tables.tables[i].elements,my_tables.tables[i].be_cnt);
           }
         break;
        }
     }
//--- Удаление иаблицы name="2"
   return(INIT_SUCCEEDED);
  }

Удаляется таблица (name="2")

Есть ли способ быстро "свинуть" влево последующие таблицы, не перебирая elements в таблицах?

 
Либо используйте "Списки", либо последний элемент массива ставьте на место удаленного с уменьшением размерности массива на единицу.
 
fxsaber:
Либо используйте "Списки", либо последний элемент массива ставьте на место удаленного с уменьшением размерности массива на единицу.


Дело в том, что таблицы НЕ одинаковые (разное кол-во элемнтов в таблицах).

 
prostotrader:


Дело в том, что таблицы НЕ одинаковые (разное кол-во элемнтов в таблицах).

В структуре TABLE пишите кастомный "operator =", который будет поэлементно копировать структуру.