C++
- 5 ответов
- 0 вопросов
4
Вклад в тег
если вы без указания типа и так УЖЕ ИМЕЕТЕ достаточно информации, чтобы уверенно работать со значением - тогда можно использовать auto. Если чувствуете, что не имеете, или сомневаетесь, что имеете - лучше тип указать.
std::binary_function
и прочая устаревшая фигня. Да и можно заюзать лямбду, если этот компаратор нужен только в одном месте кода.std::partition
(если относительный порядок чётных и нечётных элементов между собой не важен) или std::stable_partition
(если нужно сохранить оригинальный порядок).std::stable_partition(vec.begin(), vec.end(), [](int x) { return x % 2 == 1; });
shared_ptr
'ов в C++ намного больше, чем оверхед от аналогичных вещей в Си. Ведь "эксепшены" там можно частично имитировать через setjmp
/longjmp
и прочие прелести, а "shared_ptr" навелосипедить ручками, сделав структуру для хранения данных, указателя на функцию-делитер и атомарных счётчиков strong и weak ссылок, работа с которыми будет осуществляться через соответствующие функции из <stdatomic.h>
.constexpr
. В сочетании с шаблонами поможет вынести в компайл-тайм много всего -- причём, в отличие от рекурсивной функциональщины, использующей только шаблоны, это будет смотреться читабельно. В C++11 constexpr
слабоват, но начиная с C++14 с ним есть где разогнаться.array
и tuple
.enum class
и nullptr
.override
сделает код понятнее и предотвратит неприятные ошибки с hiding'ом вместо переопределения.