gpt4 book ai didi

c++ - 我应该让我的功能尽可能通用吗?

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

template<class T>
void swap(T &a, T &b)
{
T t;

t = a;
a = b;
b = t;
}

替换

void swap(int &a, int &b)
{
int t;

t = a;
a = b;
b = t;
}

这是我能想出的最简单的例子,但应该还有很多其他复杂的功能。我是否应该尽可能将我编写的所有方法都模板化?

这样做有什么缺点吗?

谢谢。

最佳答案

通用性具有可重用的优点。然而,写通用的东西,只有在:

  1. 这样做并不比非泛型花费更多的时间
  2. 与非通用解决方案相比,它不会使代码复杂化
  3. 你知道以后会从中受益

但是,了解您的标准库。您提供的案例已经在 STL 中作为 std::swap

此外,请记住,在使用模板进行通用编写时,您可以使用模板特化来优化特殊情况。但是,请始终在性能需要时,而不是像您编写的那样。

另外,请注意,这里有运行时和编译时性能的问题。基于模板的解决方案增加了编译时间。内联解决方案可以但不是必须减少运行时间。

`原因“过早的优化和通用性是万恶之源”。你可以引用我的话 -_-。

关于c++ - 我应该让我的功能尽可能通用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995290/

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