gpt4 book ai didi

c++ - 如何仅使用容器模板?

转载 作者:太空宇宙 更新时间:2023-11-04 15:41:08 25 4
gpt4 key购买 nike

我认为我的标题不准确,所以直接转到代码。

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

例子:

MyClass myClass = Fobaizer::GetItemFromContainer<MyClass, vector<MyClass>(myVector);

MyClass myClass = Fobaizer::GetItemFromContainer<MyClass, deque<MyClass>(myDeque);

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

其实我是在找类似C#的IEnumerable的东西。

有什么想法吗?

谢谢。

最佳答案

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;
}

基本上每个容器都定义成员类型定义:

 value_type
reference
const_reference
iterator
const_iterator

因此,如果你想按值返回,你可以只使用 C::value_type,如果你想按引用返回,则可以使用 C::reference,等等。

关于c++ - 如何仅使用容器模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22785351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com