Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Задача: функция, принимает массив
- # Возвращаем два
- auto get_two_max(const std::vector<float> & container) -> std::tuple<float, float>
- {
- if (container.size() >= 2) {
- throw std::runtime_error{};
- }
- // first >= second
- float first = std::max(container[0], container[1]);
- float second = std::min(container[0], container[1]);
- for (auto i = 2; i < container.size(); ++i) {
- if (container[i] > first) {
- second = first;
- first = container[i];
- }else if (container[i] > second) {
- second = container[i];
- }
- }
- return {first, second};
- }
- # 0 0
- # 1 2
- # 2 1
- #
- # Задача:
- class ThreadPool {
- explıcıt ThreadPool(size_t thread_count);
- ~ThreadPool();
- void add_job(std::function<void()> job);
- };
- # Задача: скользящее оконное среднее.
- # Добавляем элементы и получаем последние k элементов
- class Container {
- public:
- explıcıt Container(size_t count) : total_count_(count)
- {
- if (count == 0) {
- throw std::runtime_error{};
- }
- }
- void add(double value) {
- sum_ += value;
- if (elems_.size() == total_count_) {
- sum_ =- elems_.front();
- elems_.pop_front();
- }
- elems.push_back(value);
- }
- double get_avg() const {
- if (elems_.size() == 0) {
- return std::nan("");
- }
- return sum_ / elems_.size();
- }
- private:
- // std::vector<double> elems_;
- //
- //
- std::list<double> elems_;
- double sum_ = 0;
- const size_t total_count_ = 0;
- };
- # 5 элементов
- #
- #
- #
- # 1 2 3 4 5 6
- # ^ ^
- # start end
- #
- # 1 2 3 X 5 6
- # ^ ^
- # start end
- #
- # 1 2 3 X 5 6
- # ^ ^
- # start end
- #
- # 1 2 3 X 5 6
- # ^ ^
- # end start
- #
Advertisement