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::deque或std::vector.我搜索没有任何lib的C98解决方案(boost,QT等)
事实上,我正在寻找像IEnumerableC#这样的东西.
任何的想法 ?
谢谢.
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如果您想按价值返回,如果您想通过引用返回等,则可以使用.