Переключение на Главную Страницу Страницы: 1 ... 6 7 [8] 9  ОтправитьПечать
Очень популярная тема (более 25 ответов) Коллекции в 1С++ (число прочтений - 49177 )
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #105 - 01. Августа 2008 :: 15:36
Печать  
Я в оффлайне до 7.08 Печаль
Так что ждите или обращайтесь к kms
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #106 - 01. Августа 2008 :: 19:01
Печать  
artbear писал(а) 01. Августа 2008 :: 15:36:
Я в оффлайне до 7.08 Печаль
Так что ждите или обращайтесь к kms

Ждем, возвращайся! Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #107 - 19. Августа 2008 :: 04:30
Печать  
Для нормальной работы с коллекциями не хватает методов поиска.
Предлагаю в Вектор/АссоциативныйВектор добавить методы
Найти(Значение) - возвращает индекс, если найдено, и -1, если не найдено.
НайтиПоАлгоритму(АлгоритмПоиска) - возвращает вектор с индексами найденных значений, если найдено, и пустой вектор, если не найдено.

Что скажете?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #108 - 19. Августа 2008 :: 04:34
Печать  
artbear писал(а) 19. Августа 2008 :: 04:30:
Для нормальной работы с коллекциями не хватает методов поиска.
Предлагаю в Вектор/АссоциативныйВектор добавить методы
Найти(Значение) - возвращает индекс, если найдено, и -1, если не найдено.
НайтиПоАлгоритму(АлгоритмПоиска) - возвращает вектор с индексами найденных значений, если найдено, и пустой вектор, если не найдено.

Что скажете?


Алгоритм поиска в каком виде? Можно пример?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #109 - 19. Августа 2008 :: 05:09
Печать  
Nick писал(а) 19. Августа 2008 :: 04:34:
artbear писал(а) 19. Августа 2008 :: 04:30:
Для нормальной работы с коллекциями не хватает методов поиска.
Предлагаю в Вектор/АссоциативныйВектор добавить методы
Найти(Значение) - возвращает индекс, если найдено, и -1, если не найдено.
НайтиПоАлгоритму(ФункторПоиска) - возвращает вектор с индексами найденных значений, если найдено, и пустой вектор, если не найдено.

Что скажете?


Алгоритм поиска в каком виде? Можно пример?

В метод НайтиПоАлгоритму передаем какой-нибудь объект-функтор, у которого есть метод Найти(Значение) и который возвращает 0, если не найдено, и любое другое число, например, больше 0 , если значение найдено.
Функтором может быть объект ВыполняемыйМодуль или объект пользовательского класса.
Например, Вектор = Коллекция.НайтиПоАлгоритму(МойОбъектКОП)

А еще лучше НайтиПоАлгоритму(ФункторПоиска, ИмяМетодаПоиска)
В этом случае можно юзать простейший поиск по СЗ, т.е.
Вектор = Коллекция.НайтиПоАлгоритму(СписокНужныхЗначений, "НайтиЗначение")
без создания доп. ВМ или кода.
Наверняка найдется и другое применение.

ЗЫ в целях оптимизации, наверное, лучше не возвращать Вектор, а использовать переданный.
Число НайтиПоАлгоритму(ФункторПоиска, ИмяМетодаПоиска, ВекторРез) - 1, если нашли, и 0, если нет.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #110 - 19. Августа 2008 :: 05:22
Печать  
artbear писал(а) 19. Августа 2008 :: 04:30:
Для нормальной работы с коллекциями не хватает методов поиска.

Зарегил баг http://www.1cpp.ru/bugs/show_bug.cgi?id=4080
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #111 - 19. Августа 2008 :: 16:14
Печать  
artbear писал(а) 19. Августа 2008 :: 04:30:
Для нормальной работы с коллекциями не хватает методов поиска.
Предлагаю в Вектор/АссоциативныйВектор добавить методы
Найти(Значение) - возвращает индекс, если найдено, и -1, если не найдено.
НайтиПоАлгоритму(АлгоритмПоиска) - возвращает вектор с индексами найденных значений, если найдено, и пустой вектор, если не найдено.


Цитата:
Что скажете?

Ну, в такой прямолинейной постановке задачи есть множество нерешенных вопросов.

1. Как должен осуществляться поиск? Линейно?
А если контейнер отсортирован? Бинарно? Это будет отдельный метод или модификация существующего?

2. Откуда должен осуществляться поиск?
С начала? С заданного индекса?

3. В каких пределах?
До конца? До заданного индекса?

4. Зачем возвращать вектор найденных значений?
Может быть, мне нужно только первое и последнее значения?

5. Направление поиска?
Вперед? Назад?

6. А собственный функтор сравнения не захочется?
Для упорядочивания по алгоритму и последующему поиску?

7. А позиционирование типа lower_bound/upper_bound/equal_range не понадобится?

Короче, можно долго рассуждать.
Чтобы решить все это эффективно, нужно понятие итератора.
Точно так же, как оно нужно было бы и для ИТ.

Кстати, кроме поиска, итераторы нужны во множестве других операций.
Вот только всерьез думать над их дизайном пока некогда.

А делать по-быстрому не хотелось бы.
Дабы не плодить списки несовместимостей из-за изначально непроработанных решений.

P.S.
А может быть, нам хватает возможностей ИТ?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #112 - 20. Августа 2008 :: 03:19
Печать  
kms писал(а) 19. Августа 2008 :: 16:14:
artbear писал(а) 19. Августа 2008 :: 04:30:
Для нормальной работы с коллекциями не хватает методов поиска.
Предлагаю в Вектор/АссоциативныйВектор добавить методы
Найти(Значение) - возвращает индекс, если найдено, и -1, если не найдено.
НайтиПоАлгоритму(АлгоритмПоиска) - возвращает вектор с индексами найденных значений, если найдено, и пустой вектор, если не найдено.


Цитата:
Что скажете?

1. Как должен осуществляться поиск? Линейно?
А если контейнер отсортирован? Бинарно? Это будет отдельный метод или модификация существующего?

2. Откуда должен осуществляться поиск?
С начала? С заданного индекса?

3. В каких пределах?
До конца? До заданного индекса?

4. Зачем возвращать вектор найденных значений?
Может быть, мне нужно только первое и последнее значения?

5. Направление поиска?
Вперед? Назад?

6. А собственный функтор сравнения не захочется?
Для упорядочивания по алгоритму и последующему поиску?

7. А позиционирование типа lower_bound/upper_bound/equal_range не понадобится?

Короче, можно долго рассуждать.
Чтобы решить все это эффективно, нужно понятие итератора.
Точно так же, как оно нужно было бы и для ИТ.

Кстати, кроме поиска, итераторы нужны во множестве других операций.
Вот только всерьез думать над их дизайном пока некогда.

А делать по-быстрому не хотелось бы.
Дабы не плодить списки несовместимостей из-за изначально непроработанных решений.

P.S.
А может быть, нам хватает возможностей ИТ?

Отвечу по пунктам.

1. С точки зрения внешнего интерфейса нет разницы в методе поиска, это дело реализации
Но, естественно, хотелось бы эффективности - если сортирован, то бинарный, иначе обычный.
Или спец.параметр на усмотрение пользователя, который лучше знает, сортирована коллекция или нет.

2-3 Можно сделать два метода Найти и НайтиВИнтервале - внутренняя их реализация не сильно будет отличаться.

4. Вектор нужен потому, что операция поиска с произвольным функтором может выдавать сразу несколько результатов для различных значений, для этого и нужен вектор. Т.е. для универсальности.

5. Думаю, что вперед достаточно. Но можно и назад сделать в будущем.

6. Функтор сравнения был бы удобен, несомненно. Но скорее всего это излишество.

7. Нет, наверное, это также излишество.

8. Да, итераторы пригодились бы. Но и без них неплохо живется.

В данном случае считаю, что это лишнее усложнение.

9. По поводу ИТ - а нафига нам нужны тогда простые коллекции, если с ними нельзя выполнять даже операции поиска Печаль
ИТ все-таки более годен для более сложных вычислений и операций.

Методы поиска очень нужны, иначе операции поиска (пусть и бинарная) в режиме 1С выполняются долго Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #113 - 20. Августа 2008 :: 07:05
Печать  
Не договоримся Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #114 - 20. Августа 2008 :: 08:11
Печать  
Делать-то все равно нужно, иначе неполная реализация коллекций получается Печаль и пустые разговоры Печаль
Так что лучше договариваться Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #115 - 20. Августа 2008 :: 15:05
Печать  
Ну, рано или поздно, я думаю, появится v7stl.dll.
Там контейнеры и алгоритмы можно будет реализовать на достойном уровне.

Однако здесь есть и чисто технические проблемы - это отсутствие возможности описывать быстрые алгоритмы внутри 1С.
Есть и концептуальная проблема - v7stl.dll никому не нужно.

А вот в icpp я не уверен, что коллекции должны быть наполнены таким образом.
Если ты задумаешься, твое предложение не делает интерфейс коллекций полным, оно просто добавляет одну специализированную возможность.
На первый взгляд - кое-что - это лучше, чем ничего; но если хорошо подумать, то ничего - намного лучше, чем нЕчто. Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #116 - 20. Августа 2008 :: 19:40
Печать  
Впрочем, я подумаю; может быть в простом виде что-то такое и будет сделано.
Хотя скажу честно, для тех применений, для которых эти коллекции планировались, это все не особо нужно.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #117 - 21. Августа 2008 :: 03:09
Печать  
kms писал(а) 20. Августа 2008 :: 19:40:
Хотя скажу честно, для тех применений, для которых эти коллекции планировались, это все не особо нужно.

Поясни, что за применения?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #118 - 21. Августа 2008 :: 07:52
Печать  
artbear писал(а) 21. Августа 2008 :: 03:09:
Поясни, что за применения?

Ну, есть коллекция индексов картинок ТП, например.
Или в планах была коллекция элементов оформления ячейки ТП.
Во втором случае - это вообще контексты, а не элементарные типы, поиск там не нужен.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #119 - 21. Августа 2008 :: 08:06
Печать  
А как же тогда Вектор и АссоциативныйВектор? Печаль
Для них операции простого поиска и быстрого поиска в сортированном массиве важны/нужны/удобны.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 6 7 [8] 9 
ОтправитьПечать