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;
}
这是我能想出的最简单的例子,但应该还有很多其他复杂的功能。我是否应该尽可能将我编写的所有方法都模板化?
这样做有什么缺点吗?
谢谢。
最佳答案
通用性具有可重用的优点。然而,写通用的东西,只有在:
- 这样做并不比非泛型花费更多的时间
- 与非通用解决方案相比,它不会使代码复杂化
- 你知道以后会从中受益
但是,了解您的标准库。您提供的案例已经在 STL 中作为 std::swap
。
此外,请记住,在使用模板进行通用编写时,您可以使用模板特化来优化特殊情况。但是,请始终在性能需要时,而不是像您编写的那样。
另外,请注意,这里有运行时和编译时性能的问题。基于模板的解决方案增加了编译时间。内联解决方案可以但不是必须减少运行时间。
`原因“过早的优化和通用性是万恶之源”。你可以引用我的话 -_-。
关于c++ - 我应该让我的功能尽可能通用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995290/