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

Вывести слова в обратном порядке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Невозможно обратиться к protected член, объявленному в классе "Counter" http://www.cyberforum.ru/cpp-beginners/thread1232631.html
typedef unsigned int uint; class Counter { protected: uint count; Counter() : count(0) { } Counter(int c) :...
C++ Апишите программу которая может перечислять членов ордена по действительным именам по должностям 4.Вступив в Благотворительный орден программистов(Benevolent Order of Programmers- BOP), вы можете быть известны на собраниях ВОР под своим действительным именем, по названию должности или по... http://www.cyberforum.ru/cpp-beginners/thread1232611.html
Создание объекта в области памяти C++
Не могу разобраться с таким вопросом. Пусть есть у нас класс Example (у него есть стандартный конструктор и неважно что он делает). и имеется следующая функция: void foo(){ ...
C++ Как сделать преобразование в string для своего класса
есть 2 строчки кода Var a = "dfsfdfd"; string b = (string)a; в класса есть перегруженный оператор operator string (); но компилятор на него не реагирует и тупо не хочет компилировать, сразу...
C++ Требуется собрать кучу object в один контейнер и искать их по object_name http://www.cyberforum.ru/cpp-beginners/thread1232574.html
Пусть дана структура вида: struct object { object(const std::string&_object_name):object_name(_object_name){} bool operator<(const object&o)const{return object_name<o.object_name;} ...
C++ Нужно продублировать первое чётное число в односвязном списке Написал вот такой код, он рабочий, но никак не пойму, что нужно сделать, чтоб выполнялась поставленная задача. Прошу помочь. #include "stdafx.h" #include <iostream> #include <string.h> #include... подробнее

Показать сообщение отдельно
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
24.07.2014, 06:53
немного наркомании)
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
 
#include <boost/tokenizer.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/adaptor/reversed.hpp>
#include <boost/range/adaptor/transformed.hpp>
#include <boost/range/algorithm/copy.hpp>
#include <boost/range/algorithm_ext/push_back.hpp>
 
 
template<typename Iterator>
struct string_view : boost::iterator_range<Iterator> {
 
   using boost::iterator_range<Iterator>::iterator_range;
   
   void assign(Iterator const b, Iterator const e) {
      *this = {b, e};    
   }
};
 
 
template<typename Sequence, typename Separator, typename OutputIterator>
OutputIterator join_copy(Sequence const& sequence, Separator const& separator, OutputIterator output) {
   auto first      = std::begin(sequence);
   auto const last = std::end(sequence);
   
   if (first != last) {
      output = boost::copy(*first, output);
      
      while (++first != last) {
         output = boost::copy(separator, output);
         output = boost::copy(*first, output);
      }
   }
   
   return output;
}
 
template<typename Container, typename Sequence, typename Separator>
auto join(Sequence const& sequence, Separator const& separator) {
   Container result;
   join_copy(sequence, separator, std::back_inserter(result));
   
   return result;
}
 
template<template<typename, typename...> class Container, typename ...Args, typename Sequence>
auto copy_range(Sequence const& sequence) {
   using sequence_value = typename boost::range_value<Sequence>::type;
   using container_type = Container<sequence_value, Args...>;
    
   return boost::copy_range<container_type>(sequence);    
}
 
 
int main() {
   std::string const text = "you should solve this problem. its easy.";
   
   using separator_type = boost::char_separator<char>;
   using iterator_type  = std::string::const_iterator;
   using value_type     = string_view<iterator_type>;
   using tokenizer_type = boost::tokenizer<separator_type, iterator_type, value_type>;
   
   join_copy(
         tokenizer_type(text, separator_type(".")) | boost::adaptors::transformed(
               [] (auto const sentence) {
                     return join<std::string>(
                           copy_range<std::vector>(tokenizer_type(sentence, separator_type(" "))) | boost::adaptors::reversed
                         , " ") + ".";
               })
       , " "
       , std::ostream_iterator<char>(std::cout));
   std::cout << std::endl;
}
http://coliru.stacked-crooked.com/a/1a16c76e8b999a89
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru