第90章 reverseアルゴリズム関数


今回はreverseアルゴリズム関数についてやります。名前の通り 反転します。



template
   void reverse(
      BidirectionalIterator _First, 
      BidirectionalIterator _Last
   );
_Firstから_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);
としても同じですね。
[C++Index] [総合Index] [Previous Chapter] [Next Chapter]

Update Jan/24/2005 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。