我创造了这个模板函数查找并从shared_ptr的期广义函数在STL集合操作所有集合
template<class T>
bool FindAndDelete(set<shared_ptr<T>>& collection, shared_ptr<T> item)
{
auto foundItem = find(collection.begin(), collection.end(), item);
if(foundItem != collection.end())
{
collection.erase(foundItem);
return true;
}
else
{
return false;
}
}
问题的集合中删除和项目: 我怎么能概括它更涵盖所有集合? (向量,列表等)
例如
template<class K, class T>
bool FindAndDelete(K<shared_ptr<T>>& collection, shared_ptr<T> item);
注:我来自C#,所以也许代码是有点过:)纠正我,请
如果您不熟悉C++,可能会根据自己的喜好使用太多模板,但是[此视频(从开始到大约14分钟)](http://channel9.msdn.com/Series/C9-Lectures -Stephan-T-Lavavej-Standard-Template-Library-STL-/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-3-of-n)在Channel9上Stephan T. Lavavej给出了一个有趣的方法创建一些用于vector,deque,list,forward_list,set,multiset,map,multimap和无序变体的函数'erase'(删除特定值)和'erase_if'(删除满足谓词的任何值) 。 – 2012-11-26 12:37:57
@llonesmiz谢谢,实际上我看了他关于智能指针和收藏的视频,非常具有说服力!我喜欢模板,但有时会让我困惑,因为我习惯于在C#中使用更简单的泛型类型。 –