GUZAI3ノートブック

友人であるGUZAI3様の依頼で備忘録を書いています。

配列をstd::sortに食わせるときは「先頭を指すイテレータ」と「末尾の次を指すイテレータ」を渡す

ソートしたい配列の「先頭」「末尾」ではなく、「先頭」「末尾の次」を渡す。

以下の配列でソートを試してみる。

位置 0 1 2 3 4
要素 5 43 7 89 1

■「末尾のイテレータ」を渡す例

#include <algorithm>
#include <iostream>

int main() {
    int num[5] = {5, 43, 7, 89, 1};

    std::sort(num, num + 4);

    for (int i = 0; i < 5; i++) {
        std::cout << num[i] << std::endl;
    }

    return 0;
}

→ 出力順序:5, 7, 43 ,89, 1
(0 ~ 3 要素まで昇順)

■「末尾の次を指すイテレータ」を渡す例

#include <algorithm>
#include <iostream>

int main() {
    int num[5] = {5, 43, 7, 89, 1};

    std::sort(num, num + 5);

    for (int i = 0; i < 5; i++) {
        std::cout << num[i] << std::endl;
    }

    return 0;
}

→ 出力順序:1, 5, 7, 43 ,89
(0 ~ 4 要素まで昇順)

■ (おまけ) ソートしたい列が 1 要素

#include <algorithm>
#include <iostream>

int main() {
    int num[5] = {5, 43, 7, 89, 1};

    std::sort(num + 2, num + 3);

    for (int i = 0; i < 5; i++) {
        std::cout << num[i] << std::endl;
    }

    return 0;
}

→ 出力順序:5, 43, 7, 89 ,2
(変化なし)



範囲外参照をしているように見えるので、少しムズムズする。