Здравствуйте, jazzer, Вы писали:
E>>STL вообще достаточно специфичен -- та его часть, которая касается контейнеров, вообще не имеет себе равных, имхо. Это именно то, что нужно было для C++. Но, с другой стороны, std::string и iostream далеко не самые удачные примеры. И более удобный класс строк, например, не помешал бы. Да только где он?
J>Так может, он и не нужен?
J>Та эволюция, которую я наблюдаю, сводится к тому, чтобы предоставить 1) разнообразные контейнеры для разных вариантов использования, и 2) разнообразные алгоритмы для работы с этими контейнерами. Т.е. контейнер, параметризованный char/wchar_t, и представляет собой строку, а алгоритмы, соответственно, будут осуществлять необходимые операции, типа поиска по регэкспам, выделение подстрок и т.п.
J>А один класс, который бы включал в себя все на свете, не особо и нужен получается.
Классы которые включают в себя всё не нужны. Нужны просто нормальные классы.
Те что мы имеем в стандартной библиотеке нормальными назвать никак нельзя.
Например iostream. Ежу понятно, что если есть ввод и вывод, то класс должен уметь работать в симметричном режиме:
string a = "one two three";
double b = 3.14;
int c = 1;
stringstream ss;
ss << a << b << c;
ss >> a >> b >> c;
Глянув в исходники обнаруживаем, что такой возможности нет в принципе. Спрашивается какие вообще алгоритмы можно построить вокруг этого "класса"? Имхо, такие вещи нужно просто выкидывать из стандартной библиотеки и менять на нормальные вменяемые классы.
Да и вообще, стандартная библиотека С++ неудачный проект с самого рождения, не вызывающий ни одной положительной эмоции.