2021-10-03 21:56:20 +00:00
|
|
|
|
/*
|
|
|
|
|
* exercise_1.hpp
|
|
|
|
|
*
|
|
|
|
|
* Created on: 2 окт. 2021 г.
|
|
|
|
|
* Author: alexander
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
|
#include <random>
|
|
|
|
|
#include <iterator>
|
|
|
|
|
|
|
|
|
|
template<template<typename, typename> class TContainer, typename TItem, typename TIterator, typename T>
|
|
|
|
|
void generator(TContainer<TItem, TIterator> &c, const T &rangeStart, const T &rangeEnd)
|
|
|
|
|
{
|
2021-10-04 11:38:08 +00:00
|
|
|
|
std::random_device rd;
|
|
|
|
|
std::mt19937 mersenne(rd());
|
|
|
|
|
std::uniform_real_distribution<double> urd(rangeStart, rangeEnd);
|
2021-10-03 21:56:20 +00:00
|
|
|
|
generate(c.begin(), c.end(), [&]()
|
|
|
|
|
{
|
|
|
|
|
return urd(mersenne);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<template<typename, typename> class TContainer, typename TItem, typename TIterator>
|
|
|
|
|
void print(const TContainer<TItem, TIterator> &c)
|
|
|
|
|
{
|
2021-10-04 11:38:08 +00:00
|
|
|
|
copy(c.begin(), c.end(), std::ostream_iterator<TItem> { std::cout, " " });
|
|
|
|
|
std::cout << std::endl;
|
2021-10-03 21:56:20 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<template<typename, typename> class TContainer, typename TItem, typename TIterator>
|
|
|
|
|
void insert_sorted(TContainer<TItem, TIterator> &c, const TItem &i)
|
|
|
|
|
{
|
|
|
|
|
typename TContainer<TItem, TIterator>::iterator it = find_if(c.begin(), c.end(), [&](const TItem ¤t)
|
|
|
|
|
{
|
|
|
|
|
return current >= i;
|
|
|
|
|
});
|
|
|
|
|
c.insert(it, i);
|
|
|
|
|
}
|