我有一个例程,在其中定义了一堆对象(大约 20 个),称为它们Jet,它们有一个<我用来对它们进行排序的定义。排序后,我取最低的两个。有什么快速的方法来做到这一点?到目前为止我想到的选项:
boost::ptr_vector<Jet>使用内置的.sort(),取前两个,boost::ptr_list<Jet>, 使用.sort(), 取前两个- 使用上面的列表,而不是排序,使用
max_element,删除元素,然后再次运行。
我认为 usingstd::vector<Jet>是最糟糕的选择,因为:我不需要随机访问;排序将在内存中移动对象;并且在调用时将复制对象push_back(Jet)。由于需要复制,我还假设 anstd::list<Jet>会比boost::ptr_list<Jet>. 我进一步假设采取max_element两次会比对整个列表进行排序更快。
我的逻辑合理吗?性能差异会很大吗?还有其他我没有想到的选择吗?