Я знаю, що це дуже пізно на вечірку, але зміни часу та відповіді залишаються в стороні. C ++ 11 має досить глибокі зміни, багато з яких - підвищення продуктивності C ++ та стандартної бібліотеки. Здається, ті, хто не використовує STL або Boost, як правило, не йдуть в ногу з новими стандартами, залишаючи домашні розкручені рішення не потребуючи важливих удосконалень, звичайно це не завжди так.
Я використовував STL у кожному проекті з середини 90-х до сьогодні, за винятком короткого часу в EA. Я думаю, що сторона анти STL мала певні раціональні причини не використовувати її. Таких значною мірою немає. Спеціальні розподільники - це одне рішення, використання резерву - інше, і не передавати речі за значенням - це третя частина, але вони досить прості і будь-який програміст повинен це знати. Що важливіше, але це використання алгоритмів. Автори-компілятори точно знають, що робить for_each (), і можуть оптимізувати код. Це не може статися з домашньою рулонною петлею. for_each () на об'єкт const ще краще. Microsoft оптимізує for_each багатьма способами, включаючи серіалізацію. У них також є бібліотека AMP, у якій паралельний_фор_ех (). Якщо у вас є можливість, поговоріть з цим інженерів-компіляторів. Компілятори консолей оптимізують те, що звикає, так що sa трохи проблеми з куркою та яйцями. Microsoft стає дуже важким із C ++ 11, і наступний XBox не буде відрізнятися. Я не маю уявлення про PS4, ми ще цього не отримали.
Спеціальні алокатори - це один із способів вирішення проблеми з пам'яттю, але інший (часто не помічений) варіант - це використання нового класу та видалення на основі класу. Величезне підвищення продуктивності може бути таким чином.
Поняття про те, що Boost і STL мають вузький погляд на вирішення проблем, - це чисте божевілля. Я приголомшений тим, що багато речей у STL та Boost можна налаштувати через риси та політику. Шукайте порівняння рядків незалежно від регістру, наприклад.
Що стосується тривалих часів посилань та розширення коду, новий шаблон зовнішньої програми повинен допомогти у цьому. Як правило, я вважаю, що тривалий час компіляції відбувається внаслідок надлишкового з'єднання та неправильного використання pch.
Найбільш переконливою причиною використання STL над домоткам є мільйони людей, які можуть допомогти вам з STL. Як завжди, не оптимізуйте передчасно і тестуйте, тестуйте, тестуйте.