Плюсую, работать будет в несколько раз быстрее чем с ассоциативными массивами. Зачем переводить каждый раз входящий символ с помощью функции сворачивания в уникальный хеш, плюс дополнительные обработки, плюс памяти на порядок жрать больше с объектами будет?
Конкретно эта задача действительно будет работать быстрее. Но в задачках посложнее, без ассоциативного массива трудно обойтись. Особенно если учесть, что он обладает лучшими свойствами списка и индексного массива.
Плюсую, работать будет в несколько раз быстрее чем с ассоциативными массивами. Зачем переводить каждый раз входящий символ с помощью функции сворачивания в уникальный хеш, плюс дополнительные обработки, плюс памяти на порядок жрать больше с объектами будет?
Кстати интересно, смогли бы Вы решить задачу по поиску уникальных слов без использования ассоциативного массива, хотя бы на такой же скорости выполнения алгоритма, как с использованием этого алгоритма?
Насчет таблицы ASCII c 256 элементfvb. А что будете делать с текстом с китайскими иероглифами или многоязычном на Unicode?
В уникоде добавится одно арифметическое действие.
В китайском словаре 87 019 иероглифов, это чуть больше 300 кб, если массив интов. Тут ассоциативный массив рациональней будет, потому-что не все иероглифы будут использоваться.
Vasiliy Sokolov: Конкретно эта задача действительно будет работать быстрее. Но в задачках посложнее, без ассоциативного массива трудно обойтись. Особенно если учесть, что он обладает лучшими свойствами списка и индексного массива.
Само собой, нет ничего быстрее обыкновенного массива, так как адрес элемента задается с помощью индексных регистров.
-----------*********----------
Кстати, вопросики.
uint arr[10000000]; // массив глобальный// сколько памяти под массив выделится на этом шаге?voidOnInit()
{
arr[0] = 123;
// сколько памяти под массив будет выделено на этом шаге?
Ну если быть более конкретным по задаче, то посчитать нужно не символы, а объёмы в мт5. Так как используется неттинг и может работать несколько роботов, а позиция по каждому символу всегда одна, то и в идеале было бы сделать так: Взяв необходимый участок истории и найдя нужную сделку написать так Массив["EURUSD"]+=0.1(к примеру для Buy сделки) или тоже самое через структуру. Как вариант можно взять список всех символов, и оперировать порядковым номером каждого символа, но нет гарантий что этот список в самый неподходящий момент не изменится. Ассоциативные массивы прочитал, классная тема ,сижу вот теперь думаю использовать их или всё же по старинке в лоб простым перебором сделать.
Смотря сколько символов, если с десяток пойдет и прямой перебор.
Если серьезней подойти, то строковый массив, бинарный поиск. Можно по мере необходимости добавлять нужный символ, раздвигать массив, что бы сортировка сохранялась. Можно не заморачиваться с добавлением новых символов, в ините берем все символы в массив, сортируем, а дальше только бинарный поиск.
Еще можно попробовать глобальные переменные терминала, они почти как ассоциативные массивы, про скорость не знаю, не сравнивал, но с программированием точно проще всего.
Смотря сколько символов, если с десяток пойдет и прямой перебор.
Если серьезней подойти, то строковый массив, бинарный поиск. Можно по мере необходимости добавлять нужный символ, раздвигать массив, что бы сортировка сохранялась. Можно не заморачиваться с добавлением новых символов, в ините берем все символы в массив, сортируем, а дальше только бинарный поиск.
Символов в зависимости от брокера, но максимум думаю вряд ли больше сотни под мт5 будет и по этой же причине глобальные переменные не пойдут, их всё же будет слишком много, а я глоабльные переменные часто использую для смены настроек робота на лету, без его переинициализации.
Плюсую, работать будет в несколько раз быстрее чем с ассоциативными массивами. Зачем переводить каждый раз входящий символ с помощью функции сворачивания в уникальный хеш, плюс дополнительные обработки, плюс памяти на порядок жрать больше с объектами будет?
Допустим есть некоторый текст, скажем "Война и мир" Толстова. Стоит задача посчитать сколько раз используется каждая буква.
...
А вообще задача бессмысленная. Так как такой подсчет не зависит от конкретного автора а зависит всего от двух вещей:
- Частота распространенности конкретной буквы в словах (особенность конкретного языка);
- Размер текста.
Гораздо интереснее узнать сколько уникальный слов используется в том или ином произведении. Можно составить словарь Толстого, или словарь Пушкина.Плюсую, работать будет в несколько раз быстрее чем с ассоциативными массивами. Зачем переводить каждый раз входящий символ с помощью функции сворачивания в уникальный хеш, плюс дополнительные обработки, плюс памяти на порядок жрать больше с объектами будет?
Это что, вот когда я был Наполеоном...)))
Насчет таблицы ASCII c 256 элементfvb. А что будете делать с текстом с китайскими иероглифами или многоязычном на Unicode?
В уникоде добавится одно арифметическое действие.
В китайском словаре 87 019 иероглифов, это чуть больше 300 кб, если массив интов. Тут ассоциативный массив рациональней будет, потому-что не все иероглифы будут использоваться.
Конкретно эта задача действительно будет работать быстрее. Но в задачках посложнее, без ассоциативного массива трудно обойтись. Особенно если учесть, что он обладает лучшими свойствами списка и индексного массива.
Само собой, нет ничего быстрее обыкновенного массива, так как адрес элемента задается с помощью индексных регистров.
-----------*********----------
Кстати, вопросики.
Как вариант можно взять список всех символов, и оперировать порядковым номером каждого символа, но нет гарантий что этот список в самый неподходящий момент не изменится.
Ассоциативные массивы прочитал, классная тема ,сижу вот теперь думаю использовать их или всё же по старинке в лоб простым перебором сделать.
Смотря сколько символов, если с десяток пойдет и прямой перебор.
Если серьезней подойти, то строковый массив, бинарный поиск. Можно по мере необходимости добавлять нужный символ, раздвигать массив, что бы сортировка сохранялась. Можно не заморачиваться с добавлением новых символов, в ините берем все символы в массив, сортируем, а дальше только бинарный поиск.
Смотря сколько символов, если с десяток пойдет и прямой перебор.
Если серьезней подойти, то строковый массив, бинарный поиск. Можно по мере необходимости добавлять нужный символ, раздвигать массив, что бы сортировка сохранялась. Можно не заморачиваться с добавлением новых символов, в ините берем все символы в массив, сортируем, а дальше только бинарный поиск.
Символов в зависимости от брокера, но максимум думаю вряд ли больше сотни под мт5 будет.