The standard library provides algorithms such as std::sort for common container work.

algorithm An algorithm works with a range of values, so the container owns the data and the algorithm performs the operation.

Algorithm Sort

example
algorithm_sort.cpp
Replay: real traced execution (multi-file project)
#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    int bonus = 4;
    int extra = 6;

    std::vector<int> scores{7, bonus, 3, extra};
    std::sort(scores.begin(), scores.end());

    std::cout << "first=" << scores.front() << std::endl;
    std::cout << "last=" << scores.back() << std::endl;
    std::cout << "count=" << scores.size() << std::endl;
    return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    int bonus = 1;
    int extra = 6;

    std::vector<int> scores{7, bonus, 3, extra};
    std::sort(scores.begin(), scores.end());

    std::cout << "first=" << scores.front() << std::endl;
    std::cout << "last=" << scores.back() << std::endl;
    std::cout << "count=" << scores.size() << std::endl;
    return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    int bonus = 9;
    int extra = 6;

    std::vector<int> scores{7, bonus, 3, extra};
    std::sort(scores.begin(), scores.end());

    std::cout << "first=" << scores.front() << std::endl;
    std::cout << "last=" << scores.back() << std::endl;
    std::cout << "count=" << scores.size() << std::endl;
    return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    int bonus = 4;
    int extra = 2;

    std::vector<int> scores{7, bonus, 3, extra};
    std::sort(scores.begin(), scores.end());

    std::cout << "first=" << scores.front() << std::endl;
    std::cout << "last=" << scores.back() << std::endl;
    std::cout << "count=" << scores.size() << std::endl;
    return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    int bonus = 4;
    int extra = 8;

    std::vector<int> scores{7, bonus, 3, extra};
    std::sort(scores.begin(), scores.end());

    std::cout << "first=" << scores.front() << std::endl;
    std::cout << "last=" << scores.back() << std::endl;
    std::cout << "count=" << scores.size() << std::endl;
    return 0;
}
  1. bonus ← 4, extra ← 6, scores ← [7, 4, 3, 6]

    5int main() {6    int bonus→ 4 = 4; //@bonus=1, 97    int extra→ 6 = 6; //@extra=2, 889    std::vector<int> scores→ [7, 4, 3, 6]{7, bonus, 3, extra};10    std::sort(scores→ [3, 4, 6, 7].begin(), scores.end());1112    std::cout << "first=" << scores[3, 4, 6, 7].front() << std::endl;13    std::cout << "last=" << scores[3, 4, 6, 7].back() << std::endl;14    std::cout << "count=" << scores[3, 4, 6, 7].size() << std::endl;15    return 0;16}
    outputfirst=3
    last=7
    count=4
  1. bonus ← 1, extra ← 6, scores ← [7, 1, 3, 6]

    5int main() {6    int bonus→ 1 = 1;7    int extra→ 6 = 6;89    std::vector<int> scores→ [7, 1, 3, 6]{7, bonus, 3, extra};10    std::sort(scores→ [1, 3, 6, 7].begin(), scores.end());1112    std::cout << "first=" << scores[1, 3, 6, 7].front() << std::endl;13    std::cout << "last=" << scores[1, 3, 6, 7].back() << std::endl;14    std::cout << "count=" << scores[1, 3, 6, 7].size() << std::endl;15    return 0;16}
    outputfirst=1
    last=7
    count=4
  1. bonus ← 9, extra ← 6, scores ← [7, 9, 3, 6]

    5int main() {6    int bonus→ 9 = 9;7    int extra→ 6 = 6;89    std::vector<int> scores→ [7, 9, 3, 6]{7, bonus, 3, extra};10    std::sort(scores→ [3, 6, 7, 9].begin(), scores.end());1112    std::cout << "first=" << scores[3, 6, 7, 9].front() << std::endl;13    std::cout << "last=" << scores[3, 6, 7, 9].back() << std::endl;14    std::cout << "count=" << scores[3, 6, 7, 9].size() << std::endl;15    return 0;16}
    outputfirst=3
    last=9
    count=4
  1. bonus ← 4, extra ← 2, scores ← [7, 4, 3, 2]

    5int main() {6    int bonus→ 4 = 4;7    int extra→ 2 = 2;89    std::vector<int> scores→ [7, 4, 3, 2]{7, bonus, 3, extra};10    std::sort(scores→ [2, 3, 4, 7].begin(), scores.end());1112    std::cout << "first=" << scores[2, 3, 4, 7].front() << std::endl;13    std::cout << "last=" << scores[2, 3, 4, 7].back() << std::endl;14    std::cout << "count=" << scores[2, 3, 4, 7].size() << std::endl;15    return 0;16}
    outputfirst=2
    last=7
    count=4
  1. bonus ← 4, extra ← 8, scores ← [7, 4, 3, 8]

    5int main() {6    int bonus→ 4 = 4;7    int extra→ 8 = 8;89    std::vector<int> scores→ [7, 4, 3, 8]{7, bonus, 3, extra};10    std::sort(scores→ [3, 4, 7, 8].begin(), scores.end());1112    std::cout << "first=" << scores[3, 4, 7, 8].front() << std::endl;13    std::cout << "last=" << scores[3, 4, 7, 8].back() << std::endl;14    std::cout << "count=" << scores[3, 4, 7, 8].size() << std::endl;15    return 0;16}
    outputfirst=3
    last=8
    count=4