【发布时间】:2012-01-19 20:24:01
【问题描述】:
假设我有一个长序列的无序元素 S s1, s2, s3,.... 是任意但固定的数据类型,我希望通过它根据一些布尔标准迭代和删除某些元素。
现在,如果在遍历序列之后,如果我不对序列的最终排序感兴趣,那么我可以以 2 种方式存储我的序列
- 使用普通的“
std::list”来表示序列。使用 std::list 方法执行删除。 - 使用
std::vector来表示序列。如果某个元素不符合标准并且必须被删除,则将其与最后一个向量元素交换并执行pop_back。
我的问题是
1.在时间和/或记忆方面存储我的序列的更好/有效方式是什么?
2.如果我不得不冒险猜测,那么我会说列表,因为如果si 的数据类型内存大小很大,那么交换会很昂贵。这种推理是否正确?
【问题讨论】:
-
这个无法回答。您将不得不衡量性能。如果你能提供完整的源代码,那么我们也许可以做一些分析,但以目前的形式,这个问题无法回答。
-
std::vector+std::remove_if。我从未见过我想要std::list的情况(我假设是因为我从不需要拼接。)