使用GCC 4.x,g ++和STL。应该使用哪个内部结构来保存这样的数组:( (1,4), (2,8), (3,7) )
?它应该有静态元素编号以保持原始(添加)顺序。
变体:
这可以用更好看的方式完成吗?
答案 0 :(得分:5)
如果它已经排序,则vector<pair<int, int> >
更有意义,因为它将允许您保留插入顺序(无论如何将按顺序排序!)。问题是你是否要对插入进行排序?
答案 1 :(得分:4)
std::set
持有std :: pair是首先想到的
然而,这可能不符合此要求:
它应该有静态元素编号 保留原始(添加)订单。
答案 2 :(得分:2)
这完全取决于您的插入/提取用例。在任何情况下,您都应该使用std::pair
或boost::tuple
作为元素类型,因为它们已经实现了您想要的字典顺序。
关于容器和插入/拔出:你能没有随机访问吗?您是否需要访问所有元素(使用std::set
)或仅访问顶部(使用std::priority_queue
和std::vector
)?如果您需要随机访问,请使用裸std::vector
:您是否插入了单个元素?那么它取决于你如何提取:所有元素,一旦你完成插入后?完成后只需使用push_back
和std::sort
即可。或者你提取了很多?然后使用std::vector::insert
和std::lower_bound
保持数组排序。