Имя: Пароль:
1C
 
Структура и соответствие это ассоциативный массив?
0 ДНН
 
17.08.20
17:03
В продолжение темы про массивы В 1С массив это массив или связный список?
Структура и соответствие это тоже массивы, только ассоциативные? Для каждого ключа через хеш-функцию вычисляется индекс в этом массиве и в элемент с этим индексом помещается значение? Или как они устроены?
1 Garykom
 
гуру
17.08.20
17:07
(0) тоже самое, просто отсортировано
2 ДНН
 
17.08.20
17:10
(1) Отсортировано по хешу?
Вот такой код для соответствия выдал значения в произвольном порядке, а для структуры в том же порядке, в котором добавлял:

Стр = Новый Соответствие;
Для ё = 0 По 1000 ЦИкл
    й = 1000 - ё;
    Стр.Вставить("а" + Формат(й, "ЧГ=0"), й);    
КонецЦикла;    
    
Для Каждого Кл Из СТр Цикл
    Сообщить(Кл.Значение);
КонецЦикла;
3 ДНН
 
17.08.20
17:15
Скорее всего структура просто хранит ссылки на объекты типа КлючИЗначение, поэтому в структуре ключи хранятся в порядке добавления их в структуру. То есть это тот же самый массив, только тип фиксирован.
А соответствие это ассоциативный массив, когда для ключа вычисляется хеш и значение помещается в индекс равный хешу.
Или нет?
4 Garykom
 
гуру
17.08.20
17:17
(3) хз
но для ускорения доступа нужны некие хеши, вероятно по ним и сортируется
5 VladZ
 
17.08.20
17:18
(0) А тебе это зачем?
6 Конструктор1С
 
17.08.20
17:18
Что сделать-то хочешь?
7 ДНН
 
17.08.20
17:25
(5) (6) понять как это устроено
8 VladZ
 
17.08.20
17:29
(7) Допустим ты понял. Что дальше?
9 Garikk
 
17.08.20
17:33
вообще забавно, тот факт что одинесники понятия не имеют в чем различия объектов для хранения данных платформы, показатель того что они те ещё погромисты
10 Мимохожий Однако
 
17.08.20
17:36
(9) Ты себя к какой категории относишь? )
11 ДНН
 
17.08.20
17:38
(8) Допустим нужно хранить большой объем данных (пусть будут строки), потом перебирать другой массив данных (тоже строки) и проверять есть ли они в первом массиве. Вот что лучше использовать для хранения первого объема данных? Массив? Соответствие? А может вообще структуру? А главное почему какие-то коллекции работают быстрее других при поиске, какие-то при вставке, какие-то при получении элемента по индексу. Где-то все равно это пригодится.
12 Вафель
 
17.08.20
17:39
(11) для больших объемов лучше мердж использовать
13 Мимохожий Однако
 
17.08.20
17:40
(11) Для однотипных данных лучше массив.
14 Вафель
 
17.08.20
17:40
(13) в массиве поиск перебором
15 ДНН
 
17.08.20
17:41
(13) 1С говорит, что лучше соответствие. Потому что в массиве для поиска перебираются все элементы и время поиска пропорционально размеру массива, а в соответствии время поиска фиксированно.
16 Garikk
 
17.08.20
17:42
(10) я не одинесник сейчас, но структуры хранения данных учил ещё до того как в 1С-сферу попал

но к слову я хз как в 1С оно устроено, по методике работы в 1С обычно массивы редко используются напрямую чтобы в них производительность упиралась, хотя знать это полезно конечно
17 ДНН
 
17.08.20
17:45
(15) не фиксированное, а константное
18 Ненавижу 1С
 
гуру
17.08.20
18:01
С точки зрения абстракции 1с - это всё равно как внутри устроено
19 Конструктор1С
 
17.08.20
18:14
(9) какой-нибудь сишник может точно также постебаться над тобой на предмет неумения работать напрямую с памятью. И найдётся какой-нибудь системщик, который также постебётся над тем сишником на предмет ещё более низкоуровневых технологий... в конце этой бессмысленной и беспощадной иерархии программистской псевдограмостности окажутся какие-нибудь дедушки, которые ещё в двоичном коде программы фигачили
20 mistеr
 
17.08.20
18:15
(15) Это позволяет предположить, что Соответствие реализовано как хэш-таблица.

А искать в массиве можно по-разному. Можно отсортировать и бинарным поиском, например.

А еще есть ТЗ с индексами.
21 VladZ
 
17.08.20
18:24
(11) Большой объем данных лучше хранить во внешней БД.
22 Garykom
 
гуру
17.08.20
18:42
(11) РС или внешняя бд
23 Сергиус
 
17.08.20
23:06
24 Сергиус
 
17.08.20
23:07
+(23)http://catalog.mista.ru/public/142517/

Здесь более подробно описаны отличия
25 ДенисЧ
 
18.08.20
05:16
(20) "Это позволяет предположить, что Соответствие реализовано как хэш-таблица."

Погоны капитана выдать?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан