【发布时间】:2014-02-14 11:18:08
【问题描述】:
我想改变std::list中相邻元素的位置
列表和值的示例
A B C D E F G
3 2 1 2 1 3 2
排序后我期望收到的:
A B D C F E G
3 2 2 1 3 1 2
所以,简单的A > B = 无事可做,但C < D = 交换它们并转到E 比较。
我不知道如何交换相邻元素。
所以,我想前进 1 步 good 元素
【问题讨论】:
-
splice()或std::swap(*itr1, *itr2)或erase()/insert() -
@abrahab:
std::vector,将元素存储在连续的内存块中会更好 -
你应该看看std::iter_swap
-
@LihO
std::list::sort完全能够有效地对列表进行排序。 -
@LihO OP 不想对列表进行排序。如果某些条件成立,他想遍历列表并交换相邻元素。这在
std::list上工作得很好。
标签: c++ sorting stl containers