Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;模板元程序';SO符号?_C++_Algorithm_Template Meta Programming - Fatal编程技术网

C++ C++;模板元程序';SO符号?

C++ C++;模板元程序';SO符号?,c++,algorithm,template-meta-programming,C++,Algorithm,Template Meta Programming,假设我能够实现一个模板元程序,它将“搜索数组或任何容器中的重复元素”,或者说是一个斐波那契模板元程序。我们知道最好的情况是O(N^2)和O(2^N)的斐波那契函数。由于模板是在编译时计算/加载的,时间复杂度会发生什么变化?它会变成O(1)还是取决于容器的元素数量O(N) 假设我能够实现一个模板元程序,该程序将“搜索数组或任何容器中的重复元素” 为了使用模板元编程实现这一点,必须在编译时知道容器的内容 无法使用模板元编程来减轻运行时的复杂性负担。显示一些示例代码。另外,您认为会发生什么以及为什么会

假设我能够实现一个模板元程序,它将“搜索数组或任何容器中的重复元素”,或者说是一个斐波那契模板元程序。我们知道最好的情况是O(N^2)和O(2^N)的斐波那契函数。由于模板是在编译时计算/加载的,时间复杂度会发生什么变化?它会变成O(1)还是取决于容器的元素数量O(N)

假设我能够实现一个模板元程序,该程序将“搜索数组或任何容器中的重复元素”

为了使用模板元编程实现这一点,必须在编译时知道容器的内容


无法使用模板元编程来减轻运行时的复杂性负担。

显示一些示例代码。另外,您认为会发生什么以及为什么会发生?复杂性保持不变,但您在编译时感受到痛苦,而不是在运行时(如果您在编译时完成所有工作,您将得到一个运行时常量)。但这真的重要吗?你真的能在编译时得到一个有趣的输入,足够大的复杂度来改变吗?这并不重要。我只是对此感到好奇。我在geeks for geeks()中偶然发现了这个难题,我想这是否可以通过模板元编程实现?但我不知道在时间复杂性上会发生什么?不管怎么说,@eran所说的在编译时并不重要。@Ulrich Eckhardt我没有示例代码,我只是好奇,因为我缺乏理解。我的第一个想法是,时间复杂性是在运行时评估的,因此它将是O(1),因为模板是在编译时评估的。我理解,而且由于时间复杂性与输入有关,我认为即使在编译时评估,它也不会改变最佳情况。所以从技术上讲,“搜索”和fibonacci.Hmm.的时间复杂度保持不变。。斐波那契呢。由于您将知道要计算的斐波那契序列的输入,它的时间复杂度是否仍然为O(2^N)?您直到运行时才知道输入,因此运行时的复杂度为O(2**N)。当然,假设斐波那契的递归解,我指的是斐波那契的递归解。谢谢我现在明白了。@QuestionC:你的帖子和评论是正确的,因为(合理的)假设输入只在运行时提供——但对于递归斐波那契模板代码这样的情况,我认为有理由认为“输入”可以在编译时提供(例如,以编译时常量的形式)。在这种情况下,假设编译器决定内联所有内容,编译时间将是O(2**N),运行时将是O(1)。