Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
egorychSashaMercuryПочему так ?компилятор должен ведь знать, чего именно ему генерить, не? Егорыч это ответ в стиле кэпа. Думаю что имеет смысл нам всем вспомнить почему в С++ исходный код разделён на два подтипа текстов кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 11:15 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
maytonДумаю что имеет смысл нам всем вспомнить почему в С++ исходный код разделён на два подтипа текстов кода.мне кажется, надо вспомнить правила инстанцирования шаблона, и, собственно, вопрос пропадёт сам собой. Была, правда, попытка ввести ключевое слово export, или прагма( export ), не помню, но не взлетело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 12:08 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
egorychmaytonДумаю что имеет смысл нам всем вспомнить почему в С++ исходный код разделён на два подтипа текстов кода.мне кажется, надо вспомнить правила инстанцирования шаблона, и, собственно, вопрос пропадёт сам собой. Была, правда, попытка ввести ключевое слово export, или прагма( export ), не помню, но не взлетело. Почему это происходит так как происходит, примерно понятно. Когда происходит сборка программы линковщик не может найти конкретную реализацию методов для конкретного типа объекта созданного класса. Явное инстанцирование не самый хороший вариант (хотя его можно использовать, я так думаю (кстати, интересно как в STL сделано)). Непонятно почему до сих пор эта проблема не решена, шаблоны, как мне пока кажется, слишком хороший инструмент(особенно для С++, с учётом типизации данного языка), чтобы иметь какие-то особенности по реализации. Работа с ними должна быть проще, без каких-либо особенностей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 02:28 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Например, линковщик видит что необходимо провести инстанцирование шаблона с параметрами int и elseType например, почему бы не провести повторную компиляцию некоторых модулей в которой провести явное инстанцирование данных шаблонных классов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 02:44 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНепонятно почему до сих пор эта проблема не решена Потому что никакой проблемы нет. SashaMercuryНапример, линковщик видит что необходимо провести инстанцирование шаблона с параметрами int и elseType Линковщик не знает ни про шаблоны, ни про классы. Он видит только переменные и функции. Инстанцированием занимается компилятор. Если он этого не сделал, то линковщик не найдет соответствующую функцию. На практике никакой проблемы нет, т.к. шаблоны размещаются в заголовках и включаются в каждую единицу трансляции, где они используются. А на линковщик возлагается устранение дубликатов инстанцированных шаблонов. И это работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 04:55 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНапример, линковщик видит что необходимо провести инстанцирование шаблона с параметрами int и elseType например, почему бы не провести повторную компиляцию некоторых модулей в которой провести явное инстанцирование данных шаблонных классов ? Повторную компиляцию? А где он исходники cpp возьмет, если, положим, библиотека поставляется с закрытым кодом? Если так нужно скрыть исходный код или избавиться от многочисленной повторной компиляции сложных шаблонов (которая отнимает массу времени в больших проектах) можно явно указать какие реализации шаблона должны быть инстанцированы в библиотеке - см. явное инстанцирование. Конечно, если в программе понадобится новый экземпляр шаблона, придется менять библиотеку. Другой подход - использовать шаблон как обертку над обычными не шаблонными функциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 08:54 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Анатолий, я лишь говорил о том, что как правило определение класса, и реализация методов класса расположены в разных файлах .h и .cpp Для шаблонных классов несколько иначе. И мне это не очень нравится, это только моё мнение. Я подумаю о том что вы написали, спасибо. У меня только один вопрос: можно ли решить эту 'проблему' на уровне препроцессора/компилятора/линкера ? Чтобы разработчик об этом не задумывался. Например, на этапе препроцессорной обработки определять какие потребуются инстанцирования и добавлять соответствующий код(для вызова явного инстанцирования) в соответствующие заголовочные файлы. Принципиально такое возможно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 09:17 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryАнатолий, я лишь говорил о том, что как правило определение класса, и реализация методов класса расположены в разных файлах .h и .cpp Для шаблонных классов несколько иначе. И мне это не очень нравится, это только моё мнение. Я подумаю о том что вы написали, спасибо. У меня только один вопрос: можно ли решить эту 'проблему' на уровне препроцессора/компилятора/линкера ? Чтобы разработчик об этом не задумывался. Например, на этапе препроцессорной обработки определять какие потребуются инстанцирования и добавлять соответствующий код(для вызова явного инстанцирования) в соответствующие заголовочные файлы. Принципиально такое возможно ? только если поменяют формат объектных файлов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 09:46 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНапример, на этапе препроцессорной обработки определять какие потребуются инстанцирования и добавлять соответствующий код(для вызова явного инстанцирования) в соответствующие заголовочные файлы.а откуда компилятор возьмёт этот код, как думаешь? Компилятор как догадается, что ему надо заглянуть в cpp-файл, и в какой именно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 09:48 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
egorychSashaMercuryНапример, на этапе препроцессорной обработки определять какие потребуются инстанцирования и добавлять соответствующий код(для вызова явного инстанцирования) в соответствующие заголовочные файлы.а откуда компилятор возьмёт этот код, как думаешь? Компилятор как догадается, что ему надо заглянуть в cpp-файл, и в какой именно? По имени файла. Ладно, пусть вы все правы, я не претендую. Нельзя, значит нельзя. Раз все в Сообществе считают что эта ситуация не даёт каких-то проблем, и вообще, не нужно на ней заострять внимание, то соглашусь. Я вам верю. Спасибо всем за ваше мнение по данному вопросу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 09:55 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryАнатолий, я лишь говорил о том, что как правило определение класса, и реализация методов класса расположены в разных файлах .h и .cpp Для шаблонных классов несколько иначе. И мне это не очень нравится, это только моё мнение. Я подумаю о том что вы написали, спасибо. У меня только один вопрос: можно ли решить эту 'проблему' на уровне препроцессора/компилятора/линкера ? Чтобы разработчик об этом не задумывался. Например, на этапе препроцессорной обработки определять какие потребуются инстанцирования и добавлять соответствующий код(для вызова явного инстанцирования) в соответствующие заголовочные файлы. Принципиально такое возможно ? Это скорее вопрос к IDE, чем к компилятору. Вероятно, в природе есть утилиты которые помогают автоматически создавать код для явного инстанцирования шаблонов. При желании ты можешь сам сделать такую и добавить в процедуру сборки проекта. В общем случае, когда библиотека шаблонов разрабатывается и компилируется отдельно, разработчик библиотеки должен сам собрать эти данные из других проектов или из требований заказчиков и в как-то передать их в компилятор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 10:30 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЧтобы разработчик об этом не задумывался. А не надо задумываться. Шаблоны - всегда помещать в заголовок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 13:48 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Саш. Яж говорил что ты скоро возненавидишь С++ лютой ненавистью. Ты - математик. И твоя стезя - другое. Just IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 15:25 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
maytonСаш. Яж говорил что ты скоро возненавидишь С++ лютой ненавистью. Ты - математик. И твоя стезя - другое. Just IMHO. Математиками можно смело назвать Вейерштрасса, Коши, Гаусса, Колмогорова, Маркова, Красносельского, Зарубина и других, я только изучаю математику и искренне люблю её. Марк, мне интересны эти языки, навряд-ли я когда-то буду зарабатывать этим на жизнь, но мне это нравится. Из того что порой мне что-то кажется непонятным и я с чем-то не согласен, не следует что мне начинает не нравиться этот язык, из этого, как правило, следует что я мало знаю для того, чтобы понять почему именно так правильно и должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 17:14 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Ну дай бох. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 17:35 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
maytonСаш. Яж говорил что ты скоро возненавидишь С++ лютой ненавистью. Рано еще про ненависть говорить, это он еще за джаву не взялся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2015, 00:45 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. У меня возник вопрос в контексте С++. Существует ли такой контейнер или другая стандартная реализация следующей структуры(контейнера): 1. Содержатся только уникальные элементы типа float, проверка до третьего знака. Соответственно вставка не происходит в том случае, если элемент уже содержится в множестве. 2. Элементы отсортированы по возрастанию. 3. Никаких ограничений на асимптотику CRUD операций. Скорее всего имею бинарное дерево, реализация классическая. Но в контексте изучения С++, хотелось бы использовать существующие возможности языка. Скорее всего мне необходимо изучить работу с контейнером map, верно ли это? Или можно подойти к данной задаче с другой стороны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 09:23 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Тут set<> достаточно. Только еще свой компаратор придется написать, для сравнения 3-х знаков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 09:28 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Если "проверка до третьего знака" означает фиксированные три знака после запятой, то можно биткарту (vector<bool>) использовать, т.к. точность float всего 7 десятичных знаков, то потребуется 1,25 Мб под биткарту. Проверка наличия будет быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 09:46 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Если посмотреть "под углом" fixed-point операций то постановка упрощается. IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 09:56 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Дмитрий, спасибо! Посмотрю сегодня контейнер set. Dima TЕсли "проверка до третьего знака" означает фиксированные три знака после запятой, то можно биткарту (vector<bool>) использовать, т.к. точность float всего 7 десятичных знаков, то потребуется 1,25 Мб под биткарту. Проверка наличия будет быстрее. Я почему думал о сравнении . Этого в данном случае будет недостаточно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 10:13 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДмитрий, спасибо! Посмотрю сегодня контейнер set. Dima TЕсли "проверка до третьего знака" означает фиксированные три знака после запятой, то можно биткарту (vector<bool>) использовать, т.к. точность float всего 7 десятичных знаков, то потребуется 1,25 Мб под биткарту. Проверка наличия будет быстрее. Я почему думал о сравнении . Этого в данном случае будет недостаточно? По твоей изначальной формулировке можно также предположить что интересны первые три знака мантиссы. В данном случае фиксированные три знака после запятой. Эту формулу надо будет в компаратор, пример под спойлером. пример std::set Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 12:03 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Dima T, Не работает. Выводит 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 12:27 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SiemarglDima T, Не работает. Выводит 1. У меня работает MS VC 2015 Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 12:32 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Ппц ошибка. Помогла замена abs() на fabs(). Причина в каких то округлениях ( Тестил тут http://cpp.sh ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 12:33 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39290254&tid=2018439]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 293ms |
| total: | 475ms |

| 0 / 0 |
