【发布时间】:2010-09-09 21:17:06
【问题描述】:
两个,也许是微不足道的问题:
1. 为什么我的 STD 功能打不通?
真的。在过去的三天里,我实现了比 std::sort 更快的东西,只是为了做到这一点。它应该是一个 introsort,我怀疑它在内部使用了单轴版本的快速排序。史诗般的失败。我的速度至少慢了一倍。
我什至非常痛苦地复制粘贴了其他一流的程序员代码。徒劳无功。 我也对我的其他算法进行了基准测试......我的二分搜索、upper_bound、lower_bound 版本被如此精简,以至于不能用更少的指令来制作。不过,它们的速度大约是原来的两倍。
我问,为什么,为什么,为什么?这引出了我的下一个问题……
2。在哪里可以找到 STL 库函数的源代码?
当然,我想看看他们的来源!是否有可能编写比这些更高效的代码,或者我是否在我的“简单”main.cpp 的抽象级别上无法达到 STL 库使用的优化?
我的意思是例如...让我们以地图为例...它们是简单的关联容器。文档说它是用红黑树实现的。现在......是否值得尝试实现我自己的红黑树,或者他们把这种快乐 :-) 从我身边带走了,我应该把我得到的每一个数据都扔到地图容器中?
我希望这确实有意义。 如果没有,请见谅。
【问题讨论】:
-
大多数(如果不是全部)在大多数实现中的 STL 只是头文件。因此,您已经有了源代码。
-
只是一点观点:您将三天的努力与一个用了 15 年的时间才到达现在的图书馆进行了对比。此外,“精简”代码不一定更快。如果是正确的 10 行代码,10 行代码可能会比 1 行更快。
-
提问就是开始学习。 :)
-
“真正的大玩家”?在过去的 15 年里,那些大玩家是否花了他们的红黑树代码来完善他们的红黑树代码?因为编写标准库的人正是这样做的。
-
@Mike 你认为“那些人”有多少人?你认为“他们”在这方面工作了多长时间?并不是有一天有人有了 STL 的想法并坐下来编写它,从而准确地为我们提供了我们今天仍在使用的东西。作为 STL,它已经发展了 15 年左右。
标签: c++