std::vector<>
столкнулся с использованием для того, чтобы держать там ОБЪЕКТЫ. не указатели на объекты, не примитивы, а объекты. не могу понять, почему так сделано. для меня выглядит как полное дерьмо. может я чего не знаю или не понимаю? просветите, плз.
На то может быть много причин:
1) на ANSI C уже давно никто не пишет.
2) когда создаешь новый прокт в студии, его файлы имеют расширение *.h и *.cpp
3) в студии зашита функция создания классов
4) писать на С++ - это требование сверху
5) человек находится в должности "программист на С++"
Короче говоря, для выбора С++, как видишь, может быть масса причин.
Кстати, мое предположение о том, что вектор объектов создается ради того, чтобы избежать утечек памяти - это не шутка :( Мои коллеги (один слава богу уже не программирует... правда руководит :D, а другой в последнее время все больше на C# фигачет) очень не любят указатели и, если возможно, везде вставляют сам объект. Поэтому у нас полно объектов-полей класса :) Ведь
иначе ты никак не передашь состояние объекта из одной функции в другую и не вернешь его назад. И официальное объяснение было именно такое - "во избежании утечек памяти".
https://stackoverflow.com/questions/141337/should-i-store-...
STL контейнеры по дизайну value based. Еще не так давно в стандарте даже не было нормального smart pointer, приходилось писать свои велосипеды или тащить boost. Надеюсь, тебе не надо объяснять всех прелестей ебли с указателями в C++?
Если у тебя, грубо говоря, хелловорлд, то искать просто. А если мультипоточное или мультипроцессное, то можно усраться. Я помню, я даже уговорил шефиню купить какой-то тул за 4-значную сумму.
Но это все лирика. Возвращаясь к теме, нет никакой нужды париться с указателями, если можно все сделать на объектах. Покуда объекты легковесные, можно не беспокоиться, что будет stack overflow ;) Плюсов по скорости тоже не будет особо.
Начнем с ПуреС :)
-----
Структура, элемент указатель на массив указателей на функции.
Ручную подготовку параметров для вызовов Я пока опущу.
Пойми простую вещь - пока что-то компилируется в асм/код и работает
- его можно имплементить на уровне асм/код... Вопрос только во времени...