我试图制作一个简单的程序,它基本上反转了矢量的顺序.换句话说,在程序运行后,x[0]应该等于5.我目前得到的输出是5234.在1某处失踪了.我确实包括了<vector>标题.提前致谢.
int main()
{
vector<int> x(5);
x[0] = 1;
x[1] = 2;
x[2] = 3;
x[3] = 4;
x[4] = 5;
for(int z = 0; z < x.size()-1; z++)
{
int temp = x[x.size() - (1+z)];
x[x.size() - (1+z)] = x[z];
x[z] = temp;
}
for(int s = 0; s < x.size() - 1; s++)
{
cout << x[s] << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
退后一分钟.如果我只是放入swap(伪代码),你认为这会怎样?
for( elt1 = begin, elt2 = end-1; elt1 != end; ++elt1, --elt2 )
{
iter_swap( elt1, elt2 );
}
Run Code Online (Sandbox Code Playgroud)
这不会扭转你的收藏.或者更确切地说,它将会再次反转它,让你离开你的位置.假设您的收藏有4个要素:
swap( 0, 3 )
swap( 1, 2 )
swap( 2, 1 )
swap( 3, 0 )
Run Code Online (Sandbox Code Playgroud)
所以你的终止条件是错误的,你只应该中途交换......