geekbrains_cpp_difficult_mo.../lesson_4/templates.hpp

47 lines
1.2 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 <vector>
#include <random>
#include <algorithm>
#include <iterator>
#include <list>
using namespace std;
template<template<typename, typename> class TContainer, typename TItem, typename TIterator, typename T>
void generator(TContainer<TItem, TIterator> &c, const T &rangeStart, const T &rangeEnd)
{
random_device rd;
mt19937 mersenne(rd());
uniform_real_distribution<double> urd(rangeStart, rangeEnd);
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)
{
copy(c.begin(), c.end(), ostream_iterator<TItem> { cout, " " });
cout << endl;
}
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);
}