gpt4 book ai didi

c++ - c++中list、vector等容器中如何快速交换对象

转载 作者:太空宇宙 更新时间:2023-11-04 14:41:43 24 4
gpt4 key购买 nike

我想知道 C++ 容器(如 list 和 vector)中的快速交换方法是什么,因为我还没有找到任何内置交换函数。仅供引用,我想交换对象而不是整个列表。

例如,假设我们有这样的 int 序列 3 2 4 5,它们存储在列表容器 (STL) 中,我想交换 2 和 4。这是我想出的愚蠢方法:

list<int> numbers;
numbers.push_back(3);
numbers.push_back(2);
numbers.push_back(4);
numbers.push_back(5);
list<int>::iterator item;
item=numbers.begin();
advance(item,2);
int key = *item;
advance(item,-1);
numbers.insert(item,key);
advance(item,1);
numbers.erase(item);

所以,简而言之,我在这里所做的只是“复制、插入和删除”,我这样做的原因是我听说列表容器对于插入和删除元素非常有效,但我很漂亮当然应该有更好的算法。另外,我还听说有一个与指针相关的常数时间交换方法,所以有人知道吗?

感谢您的帮助。

最佳答案

你想要std::swap :

list<int>::iterator item1 = numbers.begin();
++item1;
list<int>::iterator item2 = item1;
++item2;
std::swap(*item1, *item2);

关于c++ - c++中list、vector等容器中如何快速交换对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17733943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com