Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Ср Окт 04 2006 09:49 Заголовок сообщения: Продолжаем: как лучше реализовать [] ? |
|
|
Цитата: | Многое зависит от того как Вы создаете эти классы. Например, я бы (программирую на Java) делал их неизменяемыми объектами. |
Да, действительно, ПОЧТИ ВСЕ функции получают аргументы типа CONST polynom&, ПОЭТОМУ – вопрос: как рационально (по скорости) реализовать ПАРАЛЛЕЛЬНЫЙ доступ к элементам списка? Это должно быть нечто вроде: сначала формируем массив указателей на элементы списка, затем работаем с ними (операция []), затем (в конце) удаляем этот массив.
А вопрос – как такое реализовать? Как я понимаю, помимо операции [], д.б. ещё две функции (первая формирует массив, вторая удаляет). А как передать в «ф-ю []» указатель на ЭТОТ массив? Делать в базовом контейнере ещё одно поле (для этого «врЕменного» указателя) не хотелось бы. Или вообще можно сделать оператор [], в реализацию которого «встроены» эти две ф-и (использовать static, но как узнать, когда этот массив уже можно удалять?). |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Чт Окт 05 2006 06:24 Заголовок сообщения: |
|
|
Использовать [] не лучшая идея, прежде всего поскорости. В Java есть такая штука как итераторы, которые организуют последовательный доступ к элементам списка. Наверное в STL они тоже есть. В Java все красиво и элегантно, за удаление ненужных объектов отвечает сборщик мусора. _________________ Самоловских Виталий aka Kefir |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Чт Окт 05 2006 12:10 Заголовок сообщения: |
|
|
Kefir писал(а): | Использовать [] не лучшая идея, прежде всего поскорости. .... |
если речь идёт о сях (либо си плас плас - пофигу) то глупости говорите...взятие элемента из массива есть перемножение размерности одного элемента на индекс. В защищённом режиме - это одна, две команды на азме... куда уж быстрее ?? (На яве это к примеру будет несколько десятков а то и сотен - почуствуйте разницу!!!)
(круглый) |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Чт Окт 05 2006 15:32 Заголовок сообщения: |
|
|
kolobok0 писал(а): | Kefir писал(а): | Использовать [] не лучшая идея, прежде всего поскорости. .... |
если речь идёт о сях (либо си плас плас - пофигу) то глупости говорите...взятие элемента из массива есть перемножение размерности одного элемента на индекс. В защищённом режиме - это одна, две команды на азме... куда уж быстрее ?? (На яве это к примеру будет несколько десятков а то и сотен - почуствуйте разницу!!!)
(круглый) |
Я имел ввиду переопределение оператора [] для списка _________________ Самоловских Виталий aka Kefir |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Пт Окт 06 2006 11:52 Заголовок сообщения: |
|
|
Kefir писал(а): | ...Я имел ввиду переопределение оператора [] для списка |
дык сам метод дёргается так же (не быстрее не медленнее)...а всё остальное зависит от реализации...
(круглый) |
|
Вернуться к началу |
|
|
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Пт Окт 06 2006 11:57 Заголовок сообщения: |
|
|
Цитата: | Я имел ввиду переопределение оператора [] для списка
|
И мы имели ввиду это же самое.
Мне нужно, чтобы [] обеспечивал именно ПАРАЛЛЕЛЬНЫЙ доступ к элементам списка (тогда: алгоритм сложения двух полиномов будет выглядеть совсем по-другому, нежели при использовании только последовательного доступа, и вычислительная сложность даже с учётом предварительного формирования МАССИВА УКАЗАТЕЛЕЙ стала бы НАМНОГО меньше. И ещё много других "вкусностей").
Как сделать параллельный доступ к элементам СПИСКА ? - формировать (сначала) массив указателей на все контейнеры (а как ещё?). А в конце этот массив надо удалить. И вопрос в лишь том, как "элегантнее" это реализовать на С++. |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Пт Окт 06 2006 18:12 Заголовок сообщения: |
|
|
Yello писал(а): | ...Как сделать параллельный доступ к элементам СПИСКА ? ... |
map от STL чем не подходит ?
(круглый) |
|
Вернуться к началу |
|
|
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Пт Окт 06 2006 22:50 Заголовок сообщения: |
|
|
Потому что не знаю наверняка, каким способом оно там реализовано (если не совсем так, то никакого прироста в скорости я не получу, даже наоборот). Короче, я решил – не буду выпендриваться, вместо [] - сделаю функцию monom get(polynom& p, unsigned int number, pcont **parray), и всё.
В-общем, всем спасибо. |
|
Вернуться к началу |
|
|
|