Здравствуйте, Mr. None, Вы писали:
MN>Здравствуйте, Doc, Вы писали:
Doc>>Здравствуйте, Mr. None, Вы писали:
MN>>>деле фигня и где-то их на самом деле разводят (сам такой же — каюсь)
.
Doc>>А расскажите в чем развод STL? Очень уж интересно
MN>Н-да... Не думал, что моя шутка породит такую дискуссию... В пору уже отделять в "Священные войны".
MN>А тепрь конкретика, никакую реентерабельность или потоко-безопасность я не имел в виду. Это вообще отдельная песня и не многие библиотеки, обладают 3-мя качествами одновременно: потоко-безопасность, универсальность и эффективность. Чем-то одним приходится жертвовать...
MN>Stl удобен, для тех кто его знает и умеет им пользоваться, а это очень и очень не просто. Не мне судить, но как человек, знающий его относительно хорошо (скажем так на 4-ку, думаю даже с плюсом — скромность не позволяет выставить оценку выше
), могу сказать: некоторые вещи можно было сделать по проще и по понятнее. Это касается и нюансов использования, и интерфейсов, и реализации.
MN>1. Нюансы использования.
MN>Вот последнее, в обсуждение чего я принимал участие:
MN>MN>std::vector<std::string> myVec;
MN>myVec.push_back("QQQQQQ");
MN>// ещё много-много push_back`ов.
MN>myVec.clear(); // (1)
MN>
MN>Вы надеетесь, что в точке (1) память из-под myVec освободится? Вы очень наивны, если так думаете. А чтобы узнать как её гарантировано освободить на любой реализации придётся либо проштудировать стандарт, либо искать на форуме, либо прочитать ещё одну книжку (например С. Мейерса "Эффективное использование C++"). Но и этого не достаточно: чтобы всё это сделать, надо как минимум подозревать, что не всё так просто и память реально не освободится при вызове clear. При всём при этом самое неприятное — это то, что в некоторых случаях сложность совершенно не оправдана.
MN>Чтобы убедиться, что не всё так тривиально, вбейте слово stl в поиске на RSDN`е: у меня вышло 11319 тем...
MN>2. Интерфейсы.
MN>MN>std::transform(it->begin(), it->begin() + commandEnd,
MN> cmd.begin(),
MN> std::bind2nd(std::ptr_fun(toupper_wrap), &loc));
MN>
MN>Это ещё достаточно простая комбинация. Для меня эта запись выглядит понятной, но я встречал людей, которых она вгоняла в такой ступор... А уж если надо написать свой функтор (но это уже больше относится к 3-ему пункту).
MN>3. Реализация.
MN>Вы когда-нибудь порбовали написать свой аллокатор или свой контейнер, удовлетворяющий всем требованиям stl? Попробуйте на досуге...
И в каком месте смеяться? Вы не забыли в каком форуме находитесь?