在C++中,STL标准由算法的大O特征和空间需求定义。这样你就可以在竞争性STL实现之间切换,仍然知道你的程序具有相同的运行时特征。 特别好的STL实现甚至可以特殊处理特定类型的列表比标准要求更好。它使得选择特定问题的正确迭代器或列表类型变得容易,因为你可以轻松权衡空间消耗和速度。当然,大O只是一个指导方针,所有常数都被移除了。如果算法以k*O(n)运行,则会被分类为O(n),但如果k足够高,则对于某些n和m的值,它可能比O(n^2)更糟糕。
算法导论第二版,也称CLRS(Cormen,Leiserson,Rivest,Stein),是我能想到的最接近的东西。 如果这不行,那么尝试Knuth的计算机程序设计艺术。如果这些都没有,你可能需要做一些真正的研究。