Автор Тема: Ассоциативный контейнер в оберонах  (Прочитано 39577 раз)

DIzer

  • Гость
Re: Ассоциативный контейнер в оберонах
« Ответ #15 : Апрель 06, 2012, 12:14:15 pm »
Так в массиве то его тоже сначала найти нужно  ;)

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

p.s. Или я чего-то не понимаю...
Нет мы хешируем ЗНАЧЕНИЕ(ключ, в том топике строку (набор литер)) результат этой операции число-которое служит индексом ячейки в которой будет храниться адрес контейнера (содержащего сам ключ..)

DIzer

  • Гость
Re: Ассоциативный контейнер в оберонах
« Ответ #16 : Апрель 06, 2012, 12:16:57 pm »
Может мы о разном говорим?

Я говорю об ассоциативном контейнере:

ПСЕВДОКОД:

Пер:
Чувак: Указатель на запись: Имя: СТРОКА, пол: Пол;
Возраст: Ассоциативный контейнер;
Код:
Новый(Чувак);
Чувак.Имя = "Вася";
Чувак.пол = Пол.Мужской;
Возраст.Вставить(Чувак, 50);
Результат = Возраст.Найти(Чувак);
Конец;
ДА о разном -я говорю о ассоциативном контейнере (ключ (а поскольку он уникален, то и весь контейнер) ассоциируюется с индексом), вы не знаю...

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Ассоциативный контейнер в оберонах
« Ответ #17 : Апрель 06, 2012, 12:20:49 pm »
Я не понимаю о чем вы говорите. У меня наверно пятничный тупняк  ;D

Вот в моем примере как вы Чувака хэшировать будете?

DIzer

  • Гость
Re: Ассоциативный контейнер в оберонах
« Ответ #18 : Апрель 06, 2012, 12:26:28 pm »
Я не понимаю о чем вы говорите. У меня наверно пятничный тупняк  ;D

Вот в моем примере как вы Чувака хэшировать будете?
У меня ЧУВАК - это ЗАПИСЬ- и это естественно - у вас это указатель (за это на любом собеседовании бан)...Я буду кэшировать Поле (значение которое хранится -напр. имя) ЗАПИСИ, а хранить в массиве - указатель на ЗАПИСЬ (т.е чувака в ВАШЕМ понимании).
« Последнее редактирование: Апрель 06, 2012, 12:28:37 pm от DIzer »

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: Ассоциативный контейнер в оберонах
« Ответ #19 : Апрель 06, 2012, 12:36:00 pm »
Вот в моем примере как вы Чувака хэшировать будете?
А, так значит речь не о хэшировании указателя, а о хэшировании объекта на который он указывает. Это другое. Тогда базовый класс этого объекта должен иметь виртуальную функцию возвращающую хэшкод. А в конкретном наследнике эта виртуальная функция должна быть переопределена, поскольку как хэшировать Чувака знает лишь сам класс Чувака. Так же должна быть виртуальная функция для выяснения равенства двух объектов.


ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Ассоциативный контейнер в оберонах
« Ответ #20 : Апрель 06, 2012, 12:41:30 pm »
Я про базовый класс тоже думал. Получается что в контейнер можно помещать только объекты имеющие такой базовый класс. А с остальными пролет....
Хотя с множественным наследованием наверно можно.

DIzer

  • Гость
Re: Ассоциативный контейнер в оберонах
« Ответ #21 : Апрель 06, 2012, 12:41:46 pm »
Вот в моем примере как вы Чувака хэшировать будете?
А, так значит речь не о хэшировании указателя, а о хэшировании объекта на который он указывает. Это другое. Тогда базовый класс этого объекта должен иметь виртуальную функцию возвращающую хэшкод. А в конкретном наследнике эта виртуальная функция должна быть переопределена, поскольку как хэшировать Чувака знает лишь сам класс Чувака. Так же должна быть виртуальная функция для выяснения равенства двух объектов.
Вообще говоря , кэшируется последовательность байт (это всего лишь отображение одной последовательности байт на другую ( обычно фиксированного количества)... а там что хотите...хоть указатель, хоть  ВЕСЬ обьект (все байты в которых закодированы ЗНАЧЕНИЯ всех полей), хоть значение ОДНОГО поля обьекта...

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Ассоциативный контейнер в оберонах
« Ответ #22 : Апрель 06, 2012, 12:42:40 pm »
за это на любом собеседовании бан

Э?

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Ассоциативный контейнер в оберонах
« Ответ #23 : Апрель 06, 2012, 12:49:51 pm »
Вообще говоря , кэшируется последовательность байт (это всего лишь отображение одной последовательности байт на другую ( обычно фиксированного количества)... а там что хотите...хоть указатель, хоть  ВЕСЬ обьект (все байты в которых закодированы ЗНАЧЕНИЯ всех полей), хоть значение ОДНОГО поля обьекта...

Вы для каждого типа предлагаете свой контейнер писать?

DIzer

  • Гость
Re: Ассоциативный контейнер в оберонах
« Ответ #24 : Апрель 06, 2012, 12:51:31 pm »
за это на любом собеседовании бан

Э?
Да, извините - просто жутко такого рода вещи достали- от студентов... это не у Вас, а у меня "пятничный" синдром  :(, определенно

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Ассоциативный контейнер в оберонах
« Ответ #25 : Апрель 06, 2012, 12:54:57 pm »
бывает  :)

Всех с тяпницей!
Напьюсь сёдня нафик. 8)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Ассоциативный контейнер в оберонах
« Ответ #26 : Апрель 06, 2012, 12:59:39 pm »
Вот в моем примере как вы Чувака хэшировать будете?
А, так значит речь не о хэшировании указателя, а о хэшировании объекта на который он указывает. Это другое. Тогда базовый класс этого объекта должен иметь виртуальную функцию возвращающую хэшкод. А в конкретном наследнике эта виртуальная функция должна быть переопределена, поскольку как хэшировать Чувака знает лишь сам класс Чувака. Так же должна быть виртуальная функция для выяснения равенства двух объектов.
Да. Именно поэтому в Java у класса Object (от которого наследуются все остальные) есть метод int   hashCode(). Без этого никак.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Ассоциативный контейнер в оберонах
« Ответ #27 : Апрель 06, 2012, 01:05:35 pm »
Вообще говоря , кэшируется последовательность байт (это всего лишь отображение одной последовательности байт на другую ( обычно фиксированного количества)... а там что хотите...хоть указатель, хоть  ВЕСЬ обьект (все байты в которых закодированы ЗНАЧЕНИЯ всех полей), хоть значение ОДНОГО поля обьекта...

Вы для каждого типа предлагаете свой контейнер писать?
Зависит от задачи (и от яп)- степень поддержки обобщенного программирования  в различных ЯП(так же как и "штатные" средства) -различна, а что вас смущает? - Обероны далеко не лучший вариант (это вроде всем известно).

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Ассоциативный контейнер в оберонах
« Ответ #28 : Апрель 06, 2012, 01:08:10 pm »
Да. Именно поэтому в Java у класса Object (от которого наследуются все остальные) есть метод int   hashCode(). Без этого никак.

"Вот оно че, Михалыч!"  ;D

Обероны в пролете короче  :)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Ассоциативный контейнер в оберонах
« Ответ #29 : Апрель 06, 2012, 01:11:55 pm »
Т.е. чтобы эти плюшки кушать, оно в языке должно быть изначально прошито. (В жабе Object часть языка?)