gpt4 book ai didi

c++ - 通过迭代器 C++ 确定变量类型

转载 作者:搜寻专家 更新时间:2023-10-31 01:31:50 25 4
gpt4 key购买 nike

我有一些通用函数返回一些 <T> 类型的变量.我将一些 2 个迭代器传递给函数。然后,我尝试使用函数 distance 计算 vector 的大小。 .在 func 中,我定义了一个新的类型定义,称为 v_size ,但是 <T> vector 的类型未知。如何通过仅传递迭代器来计算 vector 的大小?

template<class In, class T> 
T my_func(In b, In e)
{

typedef typename vector<T>::size_type v_size;
v_size size = distance(b, e);
...
...

}

最佳答案

如果想得到迭代器指向的类型,可以使用std::iterator_traits .例如

template<class In> 
auto my_func(In b, In e) -> typename std::iterator_traits<In>::value_type
{
using T = typename std::iterator_traits<In>::value_type;
...
}

顺便说一句:我删除了第二个模板参数 T ,它只出现在返回类型声明中,然后不能自动推导。否则,您必须在调用函数时明确指定它。

关于c++ - 通过迭代器 C++ 确定变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44826822/

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