gpt4 book ai didi

c++ - 具有模板化参数的模板函数的类型推断

转载 作者:行者123 更新时间:2023-11-30 03:02:35 24 4
gpt4 key购买 nike

编写模板函数的形式(如果有的话)是什么形式,其中参数是模板化容器?

例如,我想编写一个通用总和,它适用于任何可以迭代的容器。鉴于下面的代码,我必须编写例如 sum<int>(myInts) .我宁愿只写sum(myInts)以及要从 myInts 包含的类型推断出的类型。

/**
@brief Summation for iterable containers of numerical type
@tparam cN Numerical type (that can be summed)
@param[in] container container containing the values, e.g. a vector of doubles
@param[out] total The sum (i.e. total)
*/
template<typename N, typename cN>
N sum(cN container) {
N total;
for (N& value : container) {
total += value;
}
return total;
}

最佳答案

我写了这样一个函数

template<typename IT1>
typename std::iterator_traits<IT1>::value_type //or decltype!
function(IT1 first, const IT1 last)
{
while(first != last)
{
//your stuff here auto and decltype is your friend.
++first;
}
return //whatever
}

这样它不仅可以与容器一起使用,例如 ostream 迭代器和目录迭代器。

像这样打电话

function(std::begin(container), std::end(container));

关于c++ - 具有模板化参数的模板函数的类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10015649/

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