/* * multiset-01.cc Standard Library, std::multiset, exercise 1. */ #include #include #include #include #include #include using namespace std; template ostream& operator<<(ostream& os, const list& container) { unsigned n = 0; for (const auto& x : container) { os << setw(4) << x << ((++n % 20 == 0) ? '\n' : '\0'); } return os; } template void multiset_sort(list& container) { multiset ms(begin(container), end(container)); container.clear(); container.insert(end(container), begin(ms), end(ms)); } int main() { // random number engine, the source of random numbers std::mt19937 rng; // distribution std::uniform_int_distribution uint_dist10{ 1, 9 }; list container; for (int i = 0; i < 100; ++i) { // the engine is passed to the function call operator of the // distribution to generate the next value. container.push_back(uint_dist10(rng)); } cout << "Före sortering:\n"; cout << container << '\n'; multiset_sort(container); cout << "Efter sortering:\n"; cout << container << '\n'; return 0; }