UzhastНу, каюсь, я лично не был в восторге от использования boost.
Но, конечно, это было очень давно.
Теперь, когда мы знаем (ты же нам рассказал), что такое
vector, конечно, мы полностью готовы использовать boost.
А если серьезно...
STL гениальна.
Вместе с boost, благодаря смартпойнтерам в первую очередь, крайне эффективна.
Одна беда у STL - она требует подготовки.
Вот, к примеру:
int nums[] = {1, 2, 3, 1, 2, 3};
typedef vector<int> VI;
VI v;
some_old_func(&v[0]);
copy(nums, nums + sizeof(nums) / sizeof(int), v.end());
v.insert(v.end(), nums, nums + sizeof(nums) / sizeof(int));
for (VI::iterator i = v.begin(); i < v.end(); i++)
if (*i == 2) v.erase(i);
some_old_func(&v[0]);
copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
Здесь в пяти строчках как миниму три ошибки, которые приводят к падению (в лучшем случае сразу) на этапе выполнения.
Хорошо, если это STLPort и режим отладки вытянет, а если нет...
Плюс как минимум в одном месте вместо линейной сложности использован алгоритм с потенциально квадратичной сложностью.
...
P.S.
Если проблемы о которых я только что написал, слишком очевидны, приношу извинения.
В реальной жизни, их можно спрятать гораздо лучше.
И у многих это получится даже намного лучше, чем у меня.
P.P.S.
Сам использую и буду использовать STL, boost и стандартный C++.
Прощай, CArray.
И во многом спасибо за это именно Uzhast'у.
Это была серьезная и нужная работа по анализу проблем в реализациях CArray и STL (в vs6) от MS.