作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
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/
我知道在 KDB 中,如果您有一个列表,例如... l:`apples`oranges`pears` 您可以像下面这样进行 N 次随机选择: 9?l 但是如何尽可能均匀地选择列表中的每个项目? 最佳答
我真的厌倦了它。我有一个高级 Web 应用程序依赖于大量 Javascript 库(jQuery、jQueryUI、OpenLayers、highcharts、EJSChart 等等)。不用说,Int
我是一名优秀的程序员,十分优秀!