Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Задачка на implace_merge - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Упражнение из Страуструпа (Определите таблицу названий месяцев года и числа дней в них) http://www.cyberforum.ru/cpp-beginners/thread926631.html
Определите таблицу названий месяцев года и числа дней в них. Выведите ее. Сделайте это два раза: один раз используя вектор для названий и вектор для числа дней, и один раз используя вектор структур,...
C++ Заголовочный файл Для чево етот файл используется??? Как ево использовать в своей программе помогите хочу разобраться) http://www.cyberforum.ru/cpp-beginners/thread926608.html
Что за ошибка "TRACER" в студии2010 ? C++
Всем привет! Господа, начал было ваять оконное приложение по учёбе и тут: постоянно всплывает такая вот ошибка: Ошибка 1 error TRK0005: E:\Документы\visual studio 2010\Projects\По учёбе\По...
Как узнать, есть ли уже С++ в этом ноутбуке? C++
Как узнать, есть ли уже С++ в этом ноутбуке? И где?
C++ Работа с массивом (По данной матрице определить самых уникальных учеников и самых средних.) http://www.cyberforum.ru/cpp-beginners/thread926582.html
Пожалуйста исправьте ошибки в программе: Пусть целочисленная матрица размером пхm содержит информацию об учениках некоторого класса из п человек. В первом столбце проставлена масса (кг), во втором —...
C++ Алгоритм нахождения простых чисел Вопросы: 1) Нужен алгоритм проверки числа (является ли число простим). Нужно чтобы алгоритм был быстрым (нужно проделать 104 операций за 0.5 сек )!!!! 2) Почему мой алгоритм проверки не всегда дает... подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
22.07.2013, 10:07
ninja2,
с экземплярами рыб, отсортированные по видам рыб (cod, hadddock, herring-треска, морской окунь, сельдь) Если экземпляры рыб одного вида отсортированы по весу, то вы можете отсортировать весь вектор по весу, применив inplace_merge() для объединения информации по разным видам рыб
Перевожу. Если у нас есть вектор, отсортированный по видам рыб, при этом рыбы по видам отсортированы по весу (треска - 10, треска - 20, треска - 30, сельдь - 10, сельдь - 20) - можно отсортировать весь вектор по весу с помощью inplace_merge (треска - 10, сельдь - 10, треска - 20, сельдь - 20, треска - 30).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <algorithm>
#include <vector>
 
enum class fish_type
{
   cod,
   haddock,
   herring
};
 
struct fish_note
{
   fish_note(const std::string& f, double w, fish_type ft) :
      fisherman(f), weigth(w), fish(ft) 
   {
   }
   std::string fisherman;
   double weigth;
   fish_type fish;
};
 
int main()
{
   std::vector<fish_note> fish_notes =
   {
      {"first", 10.0, fish_type::cod},
      {"second", 20.0, fish_type::cod},
      {"third", 30.0, fish_type::cod},
      {"first", 10.0, fish_type::haddock},
      {"second", 20.0, fish_type::haddock}
   };
   auto printer = [](const std::string& msg, const std::vector<fish_note>& notes) -> void
   {
      static const char* names[] =
      {
         "cod", "haddock", "herring"
      };
      std::cout << msg << std::endl;
      for (const auto& v : notes)
      {
         std::cout << "fisherman " << v.fisherman << 
            " weigth " << v.weigth << " " << names[static_cast<std::underlying_type<fish_type>::type>(v.fish)]
            << std::endl;
      }
   };
   printer("before merge", fish_notes);
   std::inplace_merge(fish_notes.begin(), fish_notes.begin() + 3, fish_notes.end(),
         [](const fish_note& f, const fish_note& s) { return f.weigth < s.weigth; });
   printer("after merge", fish_notes);
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru