Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Версия oseq().

Posted on 8 июля, 201316 июля, 2013 by admin

Дополнительно к iseq() определите oseq(). Выходная последовательность, которая задается как аргумент oseq(), должна замещаться выходной последовательностью использующего oseq() алгоритма. Определите подходящий набор перегрузок для по крайней мере трех стандартных алгоритмов по вашему выбору.

Да как то не сильно ахота разбирать и все возможные функции перегружать. Честно сказать одну функцию transform перегружу и все, Попробую еще для массивов перегрузить и для функционального объекта.

Лень мне музолить его долго, в общем от что получилось, то получилось, маленький конечно кусочек для одного transform сделал.

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
#include <iostream>
using std::cout;
using std::endl;
#include <algorithm>
using std::transform;
#include <vector>
using std::vector;
#include <utility>
using std::pair;
 
//Iseq для одной пары
template<class In>
struct Oseq
{
    In ii3;
    Oseq(In i1) : ii3(i1){}
};
//iseq для одной пары
template<class C>
Oseq<typename C::iterator> oseq(C& c)//для всего контейнера
{
    return Oseq<typename C::iterator>(c.begin());
}
//перегрузка transform для объектов и функции
template<class In,class T> void transform(In i,
In i1,Oseq<In> r,const T& v)//расширение
{
cout <<"Mu tyt"<<endl;
transform(i,i1,r.ii3,v);
    return;
}
//перегрузим transform для массивов
/*template<class In,class T> void transform(In i,
In i1,Oseq<In> r,const T& v)
{
cout <<"dl9 T*"<<endl;
transform(i,i1,r.ii3,v);
}*/
 
int fun(int i){return (++i);}
 
int main()
{
int mass[]={1,2,3,4,5};
vector<int> v(mass,mass+5);
int mass1[5];
vector<int> v1(5);
 
transform(v.begin(),v.end(),oseq(v1),fun);
 
//вывод результатов
for(int i=0;i<v1.size();i++)
cout <<v1[i]<<' ';
cout <<endl;
 
//пробуем для массива
transform(mass,mass+5,mass1,fun);
//вывод результатов
for(int* p=mass1;p!=mass1+sizeof(mass1)/sizeof(int);p++)
cout <<*p<<' ';
cout <<endl;
 
return 0;
}

[youtube]http://www.youtube.com/watch?v=w7ksdioz79Q[/youtube]

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • ExchiNuGs к записи Программка для заполнения форума на vBulletin 3.8.7
  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • admin к записи Как удалить изображение из google
  • Shakanris к записи Программка для заполнения форума на vBulletin 3.8.7
  • костя к записи visual C++, создание диалоговых окон.
©2021 Kselax.ru Theme by ThemeGiant