Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/43: Рейтинг темы: голосов - 43, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 43

Опытным программистам С++

25.01.2018, 16:56. Показов 9459. Ответов 254
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я начал изучать С++. Есть определенный план обучения. Например: сначала изучить синтаксис, принцип ООП, контейнеры STL, стандарты С++11/C++14. Вопрос звучит так: что можно еще добавить в список для изучения? Я еще не определился в какой сфере хочу использовать язык, что нужно знать вообще не привязанная к определенной области?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2018, 16:56
Ответы с готовыми решениями:

вопрос к опытным программистам
напишите пожалуйста, как часто вам приходилось или приходится использовать для обработки ошибок механизм try-catch. Возможен ли...

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

Посмотрите опытным взглядом
Задание Дано натуральное число n. Сформировать целочисленный массив A(2n), элементами которого являются числа 1, 3, 5, . . . ,...

254
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.01.2018, 02:23
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от lArtl Посмотреть сообщение
Вот единственное, что аллокатор влияет на тип контейнера...
Вопрос в том что пулы константной аллокации для экземпляров классов давно пора иметь под капотом штатного менеджера кучи а не спорить как их прикручивать библиотечными средствами.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
29.01.2018, 02:24
Цитата Сообщение от lArtl Посмотреть сообщение
Имелось виду size_t, который будет показывать, сколько все аллокаторы выделили память.
Так мне на надо знать сколько они выделили. Мне надо знать сколько они могут выделить. Для одного списка я точно знаю что больше 64 элементов в нем не будет. И могу выделить пул на 64 элемента. Но не зная сколько у меня таких списков будет, я не могу создать глобальный пул "чтоб всем хватило". Не говоря уже о том, что такой пул по хорошему должен будет быть thread_local (во избежание секса с синхронизацией), что тоже не совсем бесплатно.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
так. а зачем там тогда вообще список если их количество заранее известно?
Затем что вставка/удаление за константное время.
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
29.01.2018, 02:42
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вопрос в том что пулы константной аллокации для экземпляров классов давно пора иметь под капотом штатного менеджера кучи а не спорить как их прикручивать библиотечными средствами.
Даешь C#!

Добавлено через 15 минут
Цитата Сообщение от Renji Посмотреть сообщение
Мне надо знать сколько они могут выделить. Для одного списка я точно знаю что больше 64 элементов в нем не будет. Но не зная сколько у меня таких списков будет, я не могу создать глобальный пул "чтоб всем хватило".
Выделить столько, не знаю сколько. Вы уверены, что это проблема stl?)
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.01.2018, 02:59
Цитата Сообщение от lArtl Посмотреть сообщение
Даешь C#!
Шарп к С++ никакого отношения не имеет. Это Java++ и диагноз там один - в топку. Даешь типизированный менеджер памяти а не всяку хрень с мусоросборником
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
29.01.2018, 03:00
Цитата Сообщение от lArtl Посмотреть сообщение
Выделить столько, не знаю сколько. Вы уверены, что это проблема stl?)
64 элемента на каждый лист. То что STL не умеет делать для каждого листа отдельный пул - да, проблема STL.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.01.2018, 03:03
Цитата Сообщение от Renji Посмотреть сообщение
Затем что вставка/удаление за константное время.
а поиск который перед этой вставкой удалением? А обход который в таких задачах обычно гораздо чаще чем вставка/ удаление? А тем более что их там немного и в векторе указатели а не сами объекты которые в кеше очень даже шустро подвинутся. Да и фигурки они обычно еще меньше чем указатели. Если шахматные на шахматной доске то в 2 байта упаковать запросто. Начальная расстановка аккурат в одну линию кеша поместится .
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
29.01.2018, 03:16
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
а поиск который перед этой вставкой удалением?
Поиск съедаемой фигуры в любом случае через board[x][y].
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А обход который в таких задачах обычно гораздо чаще чем вставка/ удаление?
Плюс одно чтение поля next. Не сказал бы что это много.
В любом случае, если тащить сюда вектор, то выйдет еще более геморойно - непонятно как втолковать ему "аллокатор уже дал буфер на 64 элемента, не дергай реалокацию! Нет, даже при вызове reserve не дергай, просто пометь что место под 64 элемента есть!".
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.01.2018, 03:19
Цитата Сообщение от Renji Посмотреть сообщение
Не сказал бы что это много.
Если это плюс один промах еша то это уже очень много. а если плюс один промах кеша на каждое телодвижение то хавайся.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
29.01.2018, 03:23
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если это плюс один промах еша то это уже очень много. а если плюс один промах кеша на каждое телодвижение то хавайся.
Там весь пул - килобайта полтора (два указателя по восемь байт, хранимое значение+выравнивание, да все на 64). Моментально уедет в кеш целиком, на чем промахи и закончатся.
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
29.01.2018, 03:26
Цитата Сообщение от Renji Посмотреть сообщение
В любом случае, если тащить сюда вектор, то выйдет еще более геморойно - непонятно как втолковать ему "аллокатор уже дал буфер на 64 элемента, не дергай реалокацию! Нет, даже при вызове reserve не дергай, просто пометь что место под 64 элемента есть!".
У аллокатора есть метод max_size. Можно еще исключения кидать)
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
29.01.2018, 03:49
Цитата Сообщение от lArtl Посмотреть сообщение
У аллокатора есть метод max_size.
И в большинстве случаев возвращает std::numeric_limits<size_type>::max() / sizeof(value_type). Что очень поможет избежать лишних реалокаций при вызове push_back.

Чтобы избежать реалокации, у аллокатора должен быть метод get_block_size(void*), возвращающий реальный размер уже выделенного блока. Но вот такого разработчики STL пока не предусмотрели. Считается что если у allocate попросили место под три элемента, он и дал место под три элемента, а не хапнул с запасом. Хапать с запасом - обязанность самого вектора.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.01.2018, 03:54
Цитата Сообщение от Renji Посмотреть сообщение
Чтобы избежать реалокации, у аллокатора должен быть метод get_block_size(void*), возвращающий реальный размер уже выделенного блока. Но вот такого разработчики STL пока не предусмотрели. Считается что если у allocate попросили место под три элемента, он и дал место под три элемента, а не хапнул с запасом. Хапать с запасом - обязанность самого вектора.
Архитектуру лечить. У меня это гораздо проще сделано. буфер и контейнер разделены. буфер дается контейнеру в качестве аргумента шаблона. и вся реаллокация висит на буфере. он при этом может ее как выполнять так и иметь заглушки с экскепшинами в дебаге вместо реаллокации, самому контейнеру тоже известно реалоцируемый буффер или нет. еще есть политика роста у самого контейнера. переключается запрет/фиксировнный шаг/ экспоненциальный.
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
29.01.2018, 04:03
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Архитектуру лечить. У меня это гораздо проще сделано. буфер и контейнер разделены. буфер дается контейнеру в качестве аргумента шаблона. и вся реаллокация висит на буфере. он при этом может ее как выполнять так и иметь заглушки с экскепшинами в дебаге вместо реаллокации, самому контейнеру тоже известно реалоцируемый буффер или нет
И чем тогда ваш буфер от аллокатора отличается?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
еще есть политика роста у самого контейнера. переключается запрет/фиксировнный шаг/ экспоненциальный.
И это он все в рантайме проверяет?
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.01.2018, 04:05
Цитата Сообщение от lArtl Посмотреть сообщение
И чем тогда ваш буфер от аллокатора отличается?
Он еще и копированием занимается.
0
 Аватар для tmpValue
41 / 75 / 15
Регистрация: 04.10.2017
Сообщений: 283
29.01.2018, 04:08
Цитата Сообщение от Tenarius Посмотреть сообщение
Есть определенный план обучения. Например: сначала изучить синтаксис, принцип ООП, контейнеры STL, стандарты С++11/C++14.
Фундамент ООП осваивать на крестах не хорошо. Ибо оные мало пересекаются. Бери либо smalltalk, либо ruby. Чистый ООПшный конечно первый. Могу еще порекоммендовать ознакомиться с CLOS из Common Lisp. Это для понимания что есть ООП. Как я уже говорил, с++ не идеоматичен. Знакомиться с техниками на его примере не выйдет. А если выйдет, то апосля будет психологическая травма в момент осознания что тебя обманули. Но сам язык впоследствии послужит хорошим примером в вопросе "как делать не надо". Так что однозначно да, потрать пару лет жизни и пойми что они были прожиты зря.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.01.2018, 04:10
Цитата Сообщение от lArtl Посмотреть сообщение
И это он все в рантайме проверяет?
политику роста в рантайме. но рост это как бы явление редкое по определению и вычисление на сколько расти все равно есть так же как и факта того нужно расти или нет.

Добавлено через 41 секунду
Цитата Сообщение от tmpValue Посмотреть сообщение
Бери либо smalltalk, либо ruby
из смалталка ООП язык как из говна пуля.
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
29.01.2018, 04:11
Цитата Сообщение от tmpValue Посмотреть сообщение
smalltalk
Цитата Сообщение от tmpValue Посмотреть сообщение
потрать пару лет жизни и пойми что они были прожиты зря
О да)
0
 Аватар для tmpValue
41 / 75 / 15
Регистрация: 04.10.2017
Сообщений: 283
29.01.2018, 04:11
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
из смалталка ООП язык как из говна пуля
... и как информативности твоего коммента. Не читал, но осуждаю, да.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.01.2018, 04:13
Цитата Сообщение от tmpValue Посмотреть сообщение
Но сам язык впоследствии послужит хорошим примером в вопросе "как делать не надо". Так что однозначно да, потрать пару лет жизни и пойми что они были прожиты зря.
Вообще С++ это так сказать проходная планка в высшую касту индустрии. Освоил на нем все что надо для атаки - будешь высокоинтеллектуальный софт писать если матан осилишь. не осилил - будешь на руби говносайты клепать.
0
 Аватар для tmpValue
41 / 75 / 15
Регистрация: 04.10.2017
Сообщений: 283
29.01.2018, 04:14
Цитата Сообщение от lArtl Посмотреть сообщение
О да)
Что "да"? Не информативно. Твоя реплика может трактоваться по-разному. Не пристало выражать свои мысли подобным образом профессионалу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2018, 04:14
Помогаю со студенческими работами здесь

Вопрос к опытным раскрутчикам.
Два месяца назад заказал раскрутку своего сайта. Задача - 100 уникальных посетителей в сутки. Из запросов, по которым требовалось...

вопрос к опытным програмистам
вопрос такого рода - за сколько вы делаете сайт и какими методами 1. Сайт визитка 2. Сайт Блог 3. Сайт форум 4. Сайт продукции (...

Вопрос к опытным гуру
В общем краткая история проблемы. Есть сайт. Сайту 3 года примерно. Коммерческий проект, сделанный под свои конкретные задачи. На сайте...

Взываю к опытным php-шникам
Заранее прошу прощения если пишу не в той теме. В общем проблема такая. Есть галерея: &lt;div...

Нужен совет опытным верстальщиков ?
Используете ли вы повседневной верстке, в CSS такие свойства CSS3, как transform, transition, animation ? И, если да, то с какими...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru