gpt4 book ai didi

具有可变数字或参数的函数的 C++ 静态编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:29 26 4
gpt4 key购买 nike

我发现自己写的代码是这样的:

template <class T>
inline bool allequal(T a,T b,T c) {return a==b&&a==c;}
template <class T>
inline bool allequal(T a,T b,T c,T d) {return a==b&&a==c&&a==d;}
template <class T>
inline bool allequal(T a,T b,T c,T d,T e) {return a==b&&a==c&&a==d&&a==e;}

我想知道是否有一种不使用 vector 或可变参数的自动化方法来执行此操作,因为在这种情况下速度很重要。

最佳答案

你可以试试这个:

#include <iostream>

template< typename T >
inline bool allequal( const T& v )
{
return true;
}

template< typename T, typename U, typename... Ts >
inline bool allequal( const T& v, const U& v1, const Ts&... Vs)
{
return (v == v1) && allequal( v1, Vs... );
}

int main()
{
std::cout << std::boolalpha;
std::cout << allequal(1, 1, 1, 1) << std::endl;
std::cout << allequal(1, 1, 2, 2) << std::endl;
return 0;
}

AFAIK 有一项针对 C++17 的提案,包括使用运算符对可变参数模板进行自定义扩展,这可以避免这种递归和这种丑陋的 (IMO) 终止,其中一个参数为 return true

注意:对于许多参数,这可能无法内联。

关于具有可变数字或参数的函数的 C++ 静态编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30665774/

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