В смысле, изваять ФОРТ из mql4? Месье знает толк в извращениях..
.
Andrew2007:
возможно есть библиотека которую можно использовать для организация стека в MQL4
или готовый код
подскажите где найти
возможно есть библиотека которую можно использовать для организация стека в MQL4
или готовый код
подскажите где найти
Позвольте полюбопытствовать, а зачем вам стек?, стек же вроде используется на низкоуровневых языках, например на ассемблере, а здесь массивы есть, намного удобней.
void push(int v, int &stack[]) { int p = stack[0] + 1; if (p >= ArraySize(stack)) { Alert("Stack overflow"); return; // or silently increase array size here } stack[p] = v; stack[0] = p; } int pop(int &stack[]) { int p = stack[0]; if (p <= 0) // underflow { Alert("Stack underflow"); return (0x80000000); } stack[0] = p - 1; return (stack[p]); } int start() { int stack[63] = {0}; push(2007, stack); Print(pop(stack)); return (0); }
Не уверен, что массивы удобнее, особенно если приходится быстро удалять/добавлять элементы где-нибудь в середине массива - или если размер массива заранее не определен. Насчет стека ничего не скажу, но вот списочком с удовольствием бы попользовался. .. Irtron, нет ли у тебя чего-нибудь аналогичного для структуры списка? Ну пусть в нем будут одни только целые элементы...
Mathemat:
Не уверен, что массивы удобнее, особенно если приходится быстро удалять/добавлять элементы где-нибудь в середине массива - или если размер массива заранее не определен. Насчет стека ничего не скажу, но вот списочком с удовольствием бы попользовался. .. Irtron, нет ли у тебя чего-нибудь аналогичного для структуры списка? Ну пусть в нем будут одни только целые элементы...
Не уверен, что массивы удобнее, особенно если приходится быстро удалять/добавлять элементы где-нибудь в середине массива - или если размер массива заранее не определен. Насчет стека ничего не скажу, но вот списочком с удовольствием бы попользовался. .. Irtron, нет ли у тебя чего-нибудь аналогичного для структуры списка? Ну пусть в нем будут одни только целые элементы...
Позволю себе несогласится, для бытрого добавления/удаления элементов массивы прекрасно подходят, так как имеют индексы, а по индексу можно легко и быстро получить/заменить любой элемент. что касательно определения размерности массива - то кто мешает изменять размер массива непосредственно перед записью элементов (в случае когда объем данных предварительно неизвестен) .
Хорошо, xeon, а если надо вставить между 1005-м и 1006-м элементом массива из 5000 эл-тов еще один? С массивами это сплошной геморр. А со списками - очень удобно.
Mathemat:
Irtron, нет ли у тебя чего-нибудь аналогичного для структуры списка? Ну пусть в нем будут одни только целые элементы...
Да у меня и стека-то не было. Так, набросал навскидку.Irtron, нет ли у тебя чего-нибудь аналогичного для структуры списка? Ну пусть в нем будут одни только целые элементы...
Со списками универсального решения нет.
Если, скажем, доступ к элементам списка происходит в основном последовательно (т.е. при помощи итератора next()), то можно поизвращаться с дополнительным списком индексов основного списка.
В случае произвольного доступа по индексу проще делать в лоб, сдвигая верх массива в ту или иную сторону. Можно, конечно, и это соптимизировать раз эдак в... Да, вообще, во сколько надо, во столько и можно.
К стати, работа стека сильно напоминает вот эту юмористическую историю:
открыла-сумку-достала-оттуда-кошелку-закрыла-сумку-открыла-кошелку-достала-оттуда-
кошелек-закрыла-кошелку-открыла-сумку-положила-туда-кошелку-закрыла-сумку-открыла-
кошелек-положила-туда-билетик-закрыла-кошелек-открыла-сумку-достала-оттуда-кошелку-
закрыла-сумку-открыла-кошелку-положила-туда-кошелек-закрыла-кошелку-открыла-сумку-
положила-туда-кошелку-закрыла-сумку..
.
Mathemat:
Хорошо, xeon, а если надо вставить между 1005-м и 1006-м элементом массива из 5000 эл-тов еще один? С массивами это сплошной геморр. А со списками - очень удобно.
Хорошо, xeon, а если надо вставить между 1005-м и 1006-м элементом массива из 5000 эл-тов еще один? С массивами это сплошной геморр. А со списками - очень удобно.
Ошибаетесь уважаемый :-) все просто, используете второе измерение,
например так:
ArrayStr[0][0] = "a"; ArrayStr[1][0] = "b"; ArrayStr[2][0] = "c"; ArrayStr[3][0] = "d"; ArrayStr[4][0] = "e"; ArrayStr[4][1] = "e1"; ArrayStr[4][2] = "e2"; ArrayStr[5][0] = "f"; ArrayStr[6][0] = "g"; ArrayStr[7][0] = "h";
Хе-хе, месье - француз... Но это решение, мне кажется, довольно
ограниченно, если массив постоянно подвергается такого рода
изменениям (вставке/удалению).
В принципе это неплохая идея, вот только массив можно объявить как ArrayStr[N][2], в ArrayStr[i][0] записывать сами элементы, а в ArrayStr[i][1] - например, индекс следующего элемента. Получится что-то вроде очень гибкого списка. Причем можно легко вставлять новые и удалять из самой середины массива.
В принципе это неплохая идея, вот только массив можно объявить как ArrayStr[N][2], в ArrayStr[i][0] записывать сами элементы, а в ArrayStr[i][1] - например, индекс следующего элемента. Получится что-то вроде очень гибкого списка. Причем можно легко вставлять новые и удалять из самой середины массива.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
или готовый код
подскажите где найти