c ++向量反向算法

Sta*_*ovv 3 c++

我试图制作一个简单的程序,它基本上反转了矢量的顺序.换句话说,在程序运行后,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)

Cas*_*Cow 5

退后一分钟.如果我只是放入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)

所以你的终止条件是错误的,你只应该中途交换......