我从未职业地使用过 C++,只在作为学生时用 (Visual) C++。我在处理缺乏抽象化的情况下遇到了困难,特别是在STL容器类方面。例如,vector类中不包含一个简单的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;
}
在这种情况下,专业的C++程序员会做什么?您每次都编写实现吗?您是否创建自己的容器类、帮助函数库,或者建议使用其他库,例如Boost(即使您在Visual Studio中编写Windows程序)?还是其他什么?(如果上述“删除”操作需要改进,请留下另一种方法,谢谢。)