Standard Library
Algorithm Sort
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
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;
}
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
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
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
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
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