Я никогда не программировал на C ++ профессионально, а работал (Visual) C ++ как студент. У меня возникают трудности с отсутствием абстракций, особенно с классами контейнеров STL . Например, векторный класс не содержит простой метод remove , распространенный во многих библиотеках, например .NET Framework. Я знаю, что есть метод erase , он не делает метод remove достаточно абстрактным, чтобы свести операцию к вызову метода из одной строки. Например, если у меня есть
std::vector<std::string>
Я не знаю, как еще удалить строковый элемент из вектора без итерации и поиска соответствующего строкового элемента.
bool remove(vector<string> & msgs, string toRemove) {
if (msgs.size() > 0) {
vector<string>::iterator it = msgs.end() - 1;
while (it >= msgs.begin()) {
string remove = it->data();
if (remove == toRemove) {
//std::cout << "removing '" << it->data() << "'\n";
msgs.erase(it);
return true;
}
it--;
}
}
return false;
}
Что делают профессиональные программисты на С ++ в этой ситуации? Вы пишете реализацию каждый раз? Вы создаете свой собственный контейнерный класс, свою собственную библиотеку вспомогательных функций или предлагаете использовать другую библиотеку, например Boost (даже если вы программируете Windows в Visual Studio)? или что-то еще?
(если вышеуказанная операция удалить требует работы, пожалуйста, оставьте альтернативный способ сделать это, спасибо.)