gpt4 book ai didi

c++ - 通过迭代器反转 vector 的元素

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:50 24 4
gpt4 key购买 nike

我尝试编写以下函数:

typedef std::vector<int>::iterator v_itt;

void reverse(v_itt first, v_itt second)
{
std::cout << "first = " << *first << ", second = " << *second << std::endl;
int *temp = &*first;
*second = *first;
*first = *temp;
std::cout << "After reversing: first = " << *first << ", second = " << *second << std::endl;
}

但是当我尝试调用它时,我得到了以下输出:

first = 322, second = 12
After reversing: first = 322, second = 322

我想,当我们用另一个指针初始化一个指针时,在初始化的指针中我们只是得到一个值的拷贝。这不是真的吗?

最佳答案

要交换元素你应该这样做:

temp = first
first = second // Here you have "second = first". It's the other way around!
second = temp

您在第二步中犯了一个错误,这导致您的 reverse 操作为两者都提供了 first。关键思想是:您将值 (first) 存储到 temp,然后通过以下操作可以覆盖 that 值 (first),因为你不会失去它。

关于c++ - 通过迭代器反转 vector 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30832051/

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