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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru