今回は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