geekbrains_cpp_difficult_mo.../lesson_4/templates.hpp

42 lines
1.1 KiB
C++
Raw Normal View History

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 &current)
{
return current >= i;
});
c.insert(it, i);
}