我怎样才能用容器模板?

alo*_*ica 0 c++ containers templates

我不认为我的标题是准确的,所以只需转到代码.

namespace Fobaizer
{
  template <typename T, typename C>
  static T GetItemFromContainer(const C &container) {
    T item = container[0]; // do something. 0 or iterator
    return item;
  }
}
Run Code Online (Sandbox Code Playgroud)

例:

MyClass myClass = Fobaizer::GetItemFromContainer<MyClass, vector<MyClass>(myVector);
Run Code Online (Sandbox Code Playgroud)

要么

MyClass myClass = Fobaizer::GetItemFromContainer<MyClass, deque<MyClass>(myDeque);
Run Code Online (Sandbox Code Playgroud)

这里C是任何容器,如std::dequestd::vector.我搜索没有任何lib的C98解决方案(boost,QT等)

事实上,我正在寻找像IEnumerableC#这样的东西.

任何的想法 ?

谢谢.

sba*_*bbi 5

template <typename C>
static typename C::value_type GetItemFromContainer(const C & container) {
    typename C::value_type item = container[0]; // do something. 0 or iterator
    return item;
 }
Run Code Online (Sandbox Code Playgroud)

基本上每个容器都定义了成员typedef:

 value_type
 reference
 const_reference
 iterator
 const_iterator
Run Code Online (Sandbox Code Playgroud)

因此C::value_type,C::reference如果您想按价值返回,如果您想通过引用返回等,则可以使用.