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

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

25.01.2018, 16:56. Показов 9461. Ответов 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
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.01.2018, 22:08
Студворк — интернет-сервис помощи студентам

Не по теме:

Undisputed, он просто ошибся используя stl и его с хорошей работы пнули.:D



Добавлено через 53 секунды
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Т.е. прекратить навязывать а тем более называть частью языка кривой лисопет созданный людьми которые не осилили ООП.
0
28.01.2018, 22:12

Не по теме:

Цитата Сообщение от _stanislav Посмотреть сообщение
Undisputed, он просто ошибся используя stl и его с хорошей работы пнули.
не поверишь -я этот говнокод вообще никогда не использовал. да кстати так о птичках - время наработки на отказ моего софта сделанного на моих библиотеках замерять так и не удалось. Даже когда такая попытка была лет через 5 после запуска таки был сбой по электропитанию. Посему через сколько софт упадет так и не выяснили.

0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
28.01.2018, 22:12
Fulcrum_013,
Ну так надежность о которой вы говорите требует оверхеда...
Честно говоря не представляю как STL может снизить читабельность.

Есть классы/функции с говорящими названиями... Что тут снижает читабельности не очень понятно
А что с точки зрения ООП в STL по вашему не так?)
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
28.01.2018, 22:18
Цитата Сообщение от Undisputed Посмотреть сообщение
Ну так надежность о которой вы говорите требует оверхеда...
Не требует. Она требует продуманных интерфейсов.

Добавлено через 1 минуту
Цитата Сообщение от Undisputed Посмотреть сообщение
А что с точки зрения ООП в STL по вашему не так?)
Полное отсутсвтие всякого присутствия ООП в STL. STL по абсолютно другой парадигме сделана. не надо путать слово class и ООП это две огромные разницы

Добавлено через 1 минуту
Цитата Сообщение от Undisputed Посмотреть сообщение
Честно говоря не представляю как STL может снизить читабельность.
пример уже приводили с std::remove_if и ContainerNavigator.RemoveAll
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.01.2018, 22:20
Fulcrum_013, кстати, причина по которой stl не убрали из стандартной библиотеки, скорее всего такая же что в комитете это решает ни один человек. и Страуструп не просто так объясняет про stl в своей новой книге. а ты забываешь приписывать в конец своего топика что это лично твое мнение. оно скорее всего так и отстранится просто мнением.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
28.01.2018, 22:21
Цитата Сообщение от Undisputed Посмотреть сообщение
Это более гибкое решение. Если бы например там было много проверок, то с++ угодил бы вам но не угодил бы тем для кого критична даже 1 лишняя инструкция, и таким разработчикам пришлось бы писать свой STL заново.
Таким разработчикам так и так придется писать свой STL заново. Простой пример: во имя ускорения я хочу чтобы std::list выделял память из заранее подготовленного буфера размером в тысячу элементов списка. Как мне создать этот самый буфер, если std::list не говорит сколько ему нужно памяти под один элемент списка? Гадать на кофейной гуще "ну, наверно sizeof(value_type)+sizeof(void*)*2"?
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
28.01.2018, 22:24
Цитата Сообщение от _stanislav Посмотреть сообщение
что это лично твое мнение
Судя по коду фреймверков ведущих производителей средств разработки это и их мнение тоже.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.01.2018, 22:24
Цитата Сообщение от Renji Посмотреть сообщение
Как мне создать этот самый буфер, если std::list не говорит сколько ему нужно памяти под один элемент списка?
аллокатор не для этого в параметрах стоит?
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
28.01.2018, 22:27
Fulcrum_013,
можете привести хотя бы один пример плохого дизайна stl и свой аналог?
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
28.01.2018, 22:31
Цитата Сообщение от Renji Посмотреть сообщение
Таким разработчикам так и так придется писать свой STL заново.
А вместо него под серьезные задачи все равно обычно что то более другое пользуется
Т.е. по большому счету STL годен разве что для хеллоувердов и то ограниченно.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
28.01.2018, 22:33
Цитата Сообщение от _stanislav Посмотреть сообщение
аллокатор не для этого в параметрах стоит?
Не для того.
C++
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
31
32
33
34
35
//Откуда мне на стадии компиляции взять objectSize и objectAlign? std::list то этой инфы не дает
template<std::size_t objectSize,std::size_t objectAlign,std::size_t poolSize>
class PoolAllocator
{
public:
    void*allocate()
    {
        void*res=nullptr;
        if(freeList)
        {
            res=freeList;
            freeList=freeList->next;
        }else if(unusedMem!=pool+poolSize)
            res=unusedMem++;
        return res;
    }
 
    void deallocate(void*mem)
    {
        Object*object=(Object*)mem;
        object->next=freeList;
        freeList=object;
    }
 
private:
    using ValueType=std::aligned_storage<objectSize,objectAlign>;
    union Object
    {
        Object*next;
        std::aligned_storage<objectSize,objectAlign> storage;
    };
    Object*freeList=nullptr;
    Object*unusedMem=pool;
    Object pool[poolSize];
};
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
28.01.2018, 22:34
Renji,
Можно же создать свой аллокатор, посмотреть значение требуемое для аллокации, и опираясь на это значение создать буфер. Размер же передается пллокатору, Разве нет?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
28.01.2018, 22:35
Цитата Сообщение от Undisputed Посмотреть сообщение
Можно же создать свой аллокатор, посмотреть значение требуемое для аллокации, и опираясь на это значение создать буфер. Разве нет?
Где посмотреть, в отладчике? Так цифры в отладчике зависят от конкретной платформы. И на соседней машине будут другими (например, из-за перехода с 32 бит на 64).
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
28.01.2018, 22:37
Цитата Сообщение от Undisputed Посмотреть сообщение
можете привести хотя бы один пример плохого дизайна stl и свой аналог?
выше смотри. Ну а вместо смартпоинтеров вообще абсолютно другая концепция - двунаправленные указатели. т.е. уников как таковых нет. есть слабовладеющие. при выходе из скопа похоронит объект если его до этого еще не похоронили со стороны или сам не похоронился. то же самое со списками объектов. удаляют из списков указатели на себя при удалении.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
28.01.2018, 22:38
Цитата Сообщение от Undisputed Посмотреть сообщение
Размер же передается пллокатору, Разве нет?
На стадии выполнения. А мне надо на стадии компиляции, чтобы malloc не дергать.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
28.01.2018, 22:40
Цитата Сообщение от Undisputed Посмотреть сообщение
Можно же создать свой аллокатор, посмотреть значение требуемое для аллокации, и опираясь на это значение создать буфер. Размер же передается пллокатору, Разве нет?
а если память под тот же вектор живет не в системном ОЗУ а где то еще а поэлементное копирование неприменимо (к примеру железо в котором это живет может аппаратно копировать куски памяти типа как GPU)? Тут аллокаторами уже не отделаешься.
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
28.01.2018, 22:43
Цитата Сообщение от Renji Посмотреть сообщение
Где посмотреть, в отладчике? Так цифры в отладчике зависят от конкретной платформы. И на соседней машине будут другими (например, из-за перехода с 32 бит на 64).
Еще раз прочтите)
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
28.01.2018, 22:47
Цитата Сообщение от Renji Посмотреть сообщение
Так цифры в отладчике зависят от конкретной платформы.
Там по идее размер одного указателя. Но опять же это тогда от реализации самой STL зависит и не факт что в комплекте другого компиляторе будет такая же реализация. Вообще чтобы была универсальность стандартизировать нужно не библиотеку а форматы данных. Вот что что а код библиотеки вместе с проектом отправить на другую платформу это не проблема. И даже с другой подобной библиотекой при одинаковом формате буферов и т.п состыковать тоже. А вот форматы буферов один в другой перекраивать при стыковке библиотек это действительно оверхед будет.
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
28.01.2018, 22:47
Использовать sizeof уже нельзя?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
28.01.2018, 22:51
Цитата Сообщение от lArtl Посмотреть сообщение
Использовать sizeof уже нельзя?
sizeof объекта ListNode, вовсе не обязательно равен сумме sizeof его элементов. Потому как есть такая штука как "выравнивание". А сам ListNode std::list не показывает. Пусть даже в форме "все потроха приватные, можно только размер посмотреть".
Цитата Сообщение от Undisputed Посмотреть сообщение
можете привести хотя бы один пример плохого дизайна stl и свой аналог?
Регулярки плохие - не умеют заглядывать назад. Нет, ну я понимаю когда Perl ругается "извините, заглядывание назад на произвольное число символов пока не поддерживается". Технические трудности и все такое. Но не в ноль же функционал урезают.
std::list/std::map не говорят сколько им надо памяти под один узел списка/дерева. Что несомненно очень облегчает создание кастомных аллокаторов, заточенных под элементы строго определенного размера.
Стринги - а можно выдерживать библиотеку в каком-то одном стиле? А то у стрингов индексы, во всем остальном STL итераторы.
И делать char знаковым или беззнаковым в зависимости от платформы, это вредительство. Хотя, это уже не вина STL.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.01.2018, 22:51
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
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