STLの各種アルゴリズムを試してみる

参考: スラスラわかるC++ 第2版, pp.397-404

<algorithm>をインクルードする。
sort()find()count()reverse()replace()を試してみる。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    // 適当に可変長排列を宣言しておく。
    vector <int> arr = {1,1,1,3,6,5,2,8,5,9,4,6,8,3,2,5,7,999,999,999};

    // 昇順に並べ換える。元の排列は破壊される。
    sort(arr.begin(), arr.end());
    for (int i = 0; i < arr.size(); i++) {
        cout << arr[i] << ",";
    }
    cout << endl;

    // 降順に並べ換える。元の排列は破壊される。
    sort(arr.rbegin(), arr.rend());
    for (int i = 0; i < arr.size(); i++) {
        cout << arr[i] << ",";
    }
    cout << endl;

    // 何かを探索する。よくわからない。
    vector <int>::iterator it = find(arr.begin(), arr.end(), 999); // 整数999を探索し、探索結果(イテレータ)を取得する。
    if (it != arr.end()) {cout << *it << " found" << endl;}
    else                 {cout << "not found" << endl;}

    // 特定の要素の個数を取得する。ここでは8がいくつ含まれているのかを返す。
    cout << count(arr.begin(), arr.end(), 8) << endl;

//////////////////////////////////////////////////////////////////////

    // 適当に可変長排列を宣言しておく。
    vector <int> ARR = {20,20,10,10,30,30};

    // 逆順に並べ換える。元の排列は破壊される。
    reverse(ARR.begin(), ARR.end());
    for (int i = 0; i < ARR.size(); i++) {
        cout << ARR[i] << ",";
    }
    cout << endl;

    // 要素を置換する。元の排列は破壊される。
    replace(ARR.begin(), ARR.end(), 10, 555);
    for (int i = 0; i < ARR.size(); i++) {
        cout << ARR[i] << ",";
    }
    cout << endl;


    return 0;
}

f:id:ti-nspire:20190620082353p:plain