今回はreverseアルゴリズム関数についてやります。名前の通り
反転します。
template_Firstから_Lastで示される要素の一つ前までの要素の並び順を反転します。void reverse( BidirectionalIterator _First, BidirectionalIterator _Last ); 
まずは、最も簡単な使い方の例を示します。
// reverse01.cpp
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int i;
    int ar[] = {1, 2, 3, 4, 5, 6};
    reverse(ar, ar+3);
    for (i = 0; i < 5; i++)
        cout<< ar[i] << ",";
    return 0;
}
reverse(ar, ar+3)は、
ar[0], ar[1], ar[2]の並び順を反転させます。
次に配列全部の並びを反転させるプログラムを次に示します。
// reverse02.cpp
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int i, ar[] = {0, 1, 2, 3, 4, 5, 6};
    reverse(ar, ar + sizeof(ar) / sizeof(int));
    for(i = 0; i < (int)(sizeof(ar) / sizeof(int)); i++)
        cout << ar[i] << ",";
    return 0;
}
vectorでも同じです。
// reverse03.cpp
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    int i;
    vector<int>v;
    for (i = 0; i < 10; i++)
        v.push_back(i);
    for (i = 0; i < 10; i++)
        cout << v[i] << ",";
    cout << "反転します" << endl;
    vector<int>::iterator p;
    p = v.begin();
    reverse(p, p + v.size());
    for (i = 0; i < 10; i++)
        cout << v[i] << ",";
    return 0;
}
これは、
vector<int>::iterator p, q; p = v.begin(); q = v.end(); reverse(p, q);としても同じですね。
Update Jan/24/2005 By Y.Kumei