gpt4 book ai didi

c++ - --it 和 it-- 在

转载 作者:行者123 更新时间:2023-11-28 02:36:23 25 4
gpt4 key购买 nike

<分区>

在函数调用的上下文中,it++++it 的行为的解释是什么——更具体地说,对于函数 iter_swap?让我感到困惑的是,下面代码中的call 2call 4 似乎交换了元素,而call 3并且调用 5 交换元素失败。我期望相反的结果,但是,我假设函数参数的一个条目将在另一个条目之前执行。查看输出,情况似乎并非如此。

那么,出于好奇,这种行为是否已定义?我怎样才能理解事物执行的顺序?谢谢!

#include <iostream>
#include <vector>
#include <algorithm>
int main(void) {
vector<int> a;
a.push_back(1);
a.push_back(2);

vector<int>::iterator it_a, it_b;
it_a = a.begin();
it_b = it_a + 1;

cout << *it_a << " " << *it_b << endl;
// call 1
iter_swap(it_a, it_b);
cout << *it_a << " " << *it_b << endl;
// call 2
iter_swap(it_a, it_a++);
cout << *--it_a << " " << *it_b << endl;
// call 3
iter_swap(it_a, ++it_a);
cout << *--it_a << " " << *it_b << endl;
// call 4
iter_swap(it_a++, it_a);
cout << *--it_a << " " << *it_b << endl;
// call 5
iter_swap(++it_a, it_a);
cout << *--it_a << " " << *it_b << endl;

return 0;
}

输出:

1 2
2 1
1 2
1 2
2 1
2 1

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