Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВ первом случае может вызываться только конструктор? В первом случае - это создание экземпляра, который потом присваивается в переменную. Что при этом вызывается зависит от типов слева и справа от =. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 15:43 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySashaMercuryМне не нравится, что он с маленькой буквы, кажется что это функция или метод, а не класс На самом деле, это даже логично, т.к. во многих случаях никакой разницы между использованием класса и функции нет )) Код: plaintext 1. 2. Для полноты, раз тема про функторы: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 15:51 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySashaMercuryВ первом случае может вызываться только конструктор? В первом случае - это создание экземпляра, который потом присваивается в переменную. Что при этом вызывается зависит от типов слева и справа от =. Создание экземпляра, понятно. Вызывается один из конструкторов, какой именно зависит от типов параметров конструктора. fe: Код: plaintext 1. 2. В данном случае будут созданы экземпляры пользовательского типа, но при этом каждый будет создан образом, описанным в своем конструкторе. Но как на создание экземпляра может повлиять T_L? Или я что-то не так понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 15:52 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Вася УткинДля полноты, раз тема про функторы: Код: plaintext 1. 2. 3. Да, пропустил. )) SashaMercuryНо как на создание экземпляра может повлиять T_L? Никак. Но при присвоении, в зависимости от задействованных типов, может еще вызваться оператор конверсии типа и оператор присвоения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 15:57 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Спасибо, я узнал много нового. Нужно более плотно читать книги по С++, благо они у меня есть( Меня гонят спать. Всем хороших выходных C: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 16:49 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Переписал одну функцию, для расчёта динамики частного процесса. В качестве структуры данных использовал последовательный контейнер vector. Пока вижу одни плюсы, очень удобно и лично я пока очень доволен. Неужели нет никаких подводных камней и всё должно быть так просто? Не нужно в разных местах кода добавлять блоки отвечающие за освобождение памяти, код становится читабельней. И при этом, возможность обратиться к элементу вектора как к элементу массива сохранилась. Но самое главное, код стал читабельней и его размер уменьшился. И теперь я не боюсь что забуду освободить память. Но всё-таки, за всё нужно платить, должны быть минусы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 11:22 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНо всё-таки, за всё нужно платить, должны быть минусы Минусы проявляются в режиме отладки, когда отключена оптимизация и код не инлайнится - работает медленнее т.к. [] в этом случае - дополнительный вызов функции. А в стандартном режиме, никаких минусов,в по сравнению с массивом созданным через malloc, нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 15:22 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Подводный камень - в интеграции. Чем дальше ты уходишь от С к С++ c STL тем сложнее тебе сделать callback твоей функции из Java (к примеру). Возможно я это говорю не к времени и не к месту но это тоже недостаток который при проектировании нужно знать и учитывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 15:44 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
maytonПодводный камень - в интеграции. Чем дальше ты уходишь от С к С++ c STL тем сложнее тебе сделать callback твоей функции из Java (к примеру). JNI обертки можно компилировать как С так и С++. Стыдно не знать ))) Поэтому никакой практической разницы конкретно в этом вопросе нет. Если же говорить вообще, то написание С-оберток к С++ классам настолько тривиально, что это - небольшой оверхед по сравнению с теми объемами отладки которые снимаются с программиста в результате того что ему не нужно думать об управлении памятью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 16:10 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, у нас разговор идет в контексте std::vector. Верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 16:16 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
maytonAnatoly Moskovsky, у нас разговор идет в контексте std::vector. Верно? Верно. Конкретно между vector и просто буфером нет никакой практической разницы. Потому что vector это и есть буфер + автоматическое удаление. Если вы например хотите доступ к буферу из ЯП который поддерживает только С АПИ, то код оберток будет практически совпадать один в один что для С что для С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 16:23 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, ну представь что Саша закодил некое ПО активно используя std::vector как базовую единицу для callbacks. Он передает и принимает аргументы в этом шаблоне. Далее я. Заметя что это ПО замечательное, и мне очень нужно я хочу его в своё приложение интегрировать. Моё приложение написано на Java. И дальше я весь превратился в слух и ожидаю от Анатолия различных лайф-хаков или хитростей как мне дальше быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 17:25 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
mayton, Я же написал. Разницы между интерфейсным кодом с буфером и с вектором практически не будет. Поэтому никаких дополнительных хаков из-за того, что это вектор, не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 17:30 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
mayton, vector<> это просто массив, все его подводные камни это перемещение в памяти при увеличении в размере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 21:12 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
а как вам такая библиотечка для Си? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 21:50 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)а как вам такая библиотечка для Си? Как остроумный прикол - сойдет )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 22:25 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Ладно. Пускай Саша даст больше сведений и тогда я разовью мысль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2016, 22:36 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
maytonЛадно. Пускай Саша даст больше сведений и тогда я разовью мысль. Да какие там сведения. У мне была функция, алгоритм которой является в целом классическим случаем динамического программирования. Необходимо было создать динамический массив, из функции можно было выйти в разных точках, соответственно в каждой точке я должен был дублировать освобождение памяти. Кроме того, размер массива не был известен мне заранее, т.о. мне необходимо было использовать либо realloc либо аналог из С++/STD(без STD, видимо вызывать new с повторным копированием). Кроме того, необходимо было постоянно сопровождать размер массива. Перечисленные факторы приводят к тому, что мне труднее анализировать сам алгоритм, я отвлекаюсь на побочные факторы. Потому я решил открыть стандарт и BS в местах, которые посвящены контейнерам и прочитать информацию о vector конкретно. И использовал его. PS Кроме того, использование компаратора в функции сортировки просто шикарная идея, я конечно это и в Си делал(передавал указатель на функцию в качестве параметра другой функции), но очень здорово, что это сделано на уровне языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 01:52 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Неудобно только чтение данных из какого-либо потока в vector. Вероятно для таких задач в С++ также существует какой-то стандартный механизм, но пока я не дошел до него. Делаю примерно следующим образом, но это через одно место называется Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 08:49 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
см. istream_iterator и back_inserter, но вполне можно обойтись и Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 09:33 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
wstсм. istream_iterator и back_inserter, но вполне можно обойтись и Код: plaintext 1. 2. 3. 4. Тоже некрасиво, было бы здорово вообще инкапсулировать циклы. Позже посмотрю ссылки. Спасибо всем за ваши мнения о контейнер vector :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 09:52 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39291173&tid=2018439]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 447ms |

| 0 / 0 |
