【发布时间】:2013-04-09 15:35:53
【问题描述】:
如果 N >= 列表大小(并且也处理 N = 0),获取作为 std::list 的前 N 个元素或整个列表的新列表的正确且安全的方法是什么?
更新
其实我并不一定需要新的列表,我只是想在后续代码中对列表的子集进行操作。我认为创建一个新列表是一种合理的方法(注意列表大小通常小于 50)。
【问题讨论】:
-
您有可能不想想对输入或结果使用
std::list。在大多数情况下,std::vector会让生活变得更简单。大多数算法都在定义的范围内工作,这将允许您对正确的子集进行操作而无需复制。 -
@JerryCoffin 我需要在获取子集之前对列表进行排序,这会影响使用向量的决定吗?
-
是的——它使矢量成为更好的选择。如果只想要N个最大(或最小)的物品,可以使用
std::nth_element来获取。
标签: c++ visual-c++-2010 stdlist