iter_swap 产生了错误的结果
iter_swap yields wrong result
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void myfunction(int i)
{
cout<<" "<<i;
};
void multiply(int a)
{
a*2;
}
int main()
{
int t[]={10,5,9,6,2,4,7,8,3,1};
vector<int> v1(t,t+10);
for_each(v1.begin(),v1.end(),multiply);
iter_swap(v1.begin(), t+9);
for_each(v1.begin(),v1.end(),myfunction);
return 0;
}
你好,我对这段代码有疑问。
当我 运行 这个时,我看到结果是 1 5 9 6 2 4 7 8 3 1 我不确定为什么最后一个元素仍然是 1 即使我分配了中间的语句iter_swap(v1.begin(), t+9);
.
给定 iter_swap(v1.begin(), t+9);
,您将交换 std::vector
v1
的第一个元素和数组 t
的第十个元素。 v1
和 t
是两个独立的对象。您将 v1
的元素打印为 for_each(v1.begin(),v1.end(),myfunction);
,但 v1
的第 10 个元素未更改。
你可能想要
iter_swap(v1.begin(), v1.end()-1); // swap the 1st and 10th element of v1
for_each(v1.begin(),v1.end(),myfunction);
我查看了你的代码,输出是正确的,
for_each(v1.begin(), v1.end(), multiply);
上面代码的输出是 v1 = 10,5,9,6,2,4,7,8,3,1 而
t 也一样 t = 10,5,9,6,2,4,7,8,3,1
iter_swap(v1.begin(), t + 9);
当你交换 v1.begin
和 t+9
时,你正在交换 10 in v1
和 1 in t9
因此最终输出
1 5 9 6 2 4 7 8 3 1
您可以尝试交换第一个和最后一个元素。
iter_swap(v1.begin(), v1.end()-1);
for_each(v1.begin(),v1.end(),myfunction);
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void myfunction(int i)
{
cout<<" "<<i;
};
void multiply(int a)
{
a*2;
}
int main()
{
int t[]={10,5,9,6,2,4,7,8,3,1};
vector<int> v1(t,t+10);
for_each(v1.begin(),v1.end(),multiply);
iter_swap(v1.begin(), t+9);
for_each(v1.begin(),v1.end(),myfunction);
return 0;
}
你好,我对这段代码有疑问。
当我 运行 这个时,我看到结果是 1 5 9 6 2 4 7 8 3 1 我不确定为什么最后一个元素仍然是 1 即使我分配了中间的语句iter_swap(v1.begin(), t+9);
.
给定 iter_swap(v1.begin(), t+9);
,您将交换 std::vector
v1
的第一个元素和数组 t
的第十个元素。 v1
和 t
是两个独立的对象。您将 v1
的元素打印为 for_each(v1.begin(),v1.end(),myfunction);
,但 v1
的第 10 个元素未更改。
你可能想要
iter_swap(v1.begin(), v1.end()-1); // swap the 1st and 10th element of v1
for_each(v1.begin(),v1.end(),myfunction);
我查看了你的代码,输出是正确的,
for_each(v1.begin(), v1.end(), multiply);
上面代码的输出是 v1 = 10,5,9,6,2,4,7,8,3,1 而 t 也一样 t = 10,5,9,6,2,4,7,8,3,1
iter_swap(v1.begin(), t + 9);
当你交换 v1.begin
和 t+9
时,你正在交换 10 in v1
和 1 in t9
因此最终输出
1 5 9 6 2 4 7 8 3 1
您可以尝试交换第一个和最后一个元素。
iter_swap(v1.begin(), v1.end()-1);
for_each(v1.begin(),v1.end(),myfunction);