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

Iseq - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не записываются числа http://www.cyberforum.ru/cpp-beginners/thread922786.html
Написал программу, которая с помощью цикла записывает в файл числа от нуля до 423. Но почему то компилятор выдает ошибку если я записываю цифры. Если же это слова, то все норм: #include "StdAfx.h" #include <iostream> #include <cstdio> #include<iomanip> using namespace std; int main () {
C++ Проблемка с exit Пример из книги. #include <iostream> #include <iomanip> // для setw() #include <process.h> // для exit() using namespace std; int main() { unsigned int n, j; cin >> n; http://www.cyberforum.ru/cpp-beginners/thread922773.html
Запись в файл C++
Не понимаю в чем дело. Написал программу которая записывает значения в файл. На деле она записывает данные в файл, если он находиться в папке с программой. Если же я указываю файл в другой папке, ничего не происходит. В чем дело? #include "stdafx.h" #include<iomanip> #include<iostream> #include<vector> #include<algorithm> #include<fstream> using namespace std;
C++ Как задать условия для метода простой итерации(СЛАУ)
Ребят помогите)) Не могу догадаться как написать условия для условия метода простой итерации=) у меня есть прога с частным случаем когда A элементы не могут равняться нулю, но препод сказал что нужен общий, т.е. когда пользователь вбивает элементы матрицы и на A ставит 0, то нужно выполнить преобразования которые показаны на картинке...не пойму как их реализовать в программном...
C++ сортировка list http://www.cyberforum.ru/cpp-beginners/thread922757.html
Здорова! Почему то список не сортируется с помощью аргумента sort, вот код: #include <iostream> using std::cout; using std::endl; #include <list> using std::list; #include <algorithm> using std::sort; #include <functional>
C++ Расширяемый массив Подскажите как задать динамически расширяемый массив, не используя STL. На теории, если массив переполнен, создаём массив в 2 раза больше и копируем туда исходный. Но сталкиваюсь с такой проблемой, как сделать массив с тем же именем. подробнее

Показать сообщение отдельно
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1

Iseq - C++

14.07.2013, 22:27. Просмотров 630. Ответов 10
Метки (Все метки)

Здорова! Есть задачка:
"Определите версию iseq() (параграф 18.3.1), для встроенных массивов istream и пар итераторов. Задайте подходящий набор перегруженных не модифицирующих последовательность алгоритмов (параграф 18.5) для работы с Iseq. Обсудите как избежать неоднозначностей и сильного роста числа функциональных шаблонов."

От примерчик что в книге есть, я его чуток модифицировал, пытался find_if сам перегрузить:
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
#include <iostream>
using std::cout;
using std::endl;
#include <list>
using std::list;
#include <algorithm>
using std::find;
#include <string>
using std::string;
#include <utility>
using std::pair;
#include <functional>
using std::equal_to;
using std::bind2nd;
 
template<class In> struct Iseq : public pair<In,In>
{
    Iseq(In i1, In i2) : pair<In,In>(i1,i2){}
};
 
template<class C> Iseq<typename C::iterator> iseq(C& c)//для всего контейнера
{
    return Iseq<typename C::iterator>(c.begin(),c.end());
}
 
template<class In,class T> In find(Iseq<In> r,const T& v)//расширение
{
    return find(r.first,r.second,v);
}
//перегрузка find_if
template<class In, class T> In find_if(Iseq<In> r,T(*ptr)(T))
{
    return find_if(r.first,r.second,ptr);
}
 
 
void f(list<string>& ls)
{
    list<string>::iterator p=find(ls.begin(),ls.end(),"standard");
    list<string>::iterator q=find(iseq(ls),"two");
    if(q!=ls.end())
        cout <<"*q= "<<*q<<endl;
    else
        cout <<"not find"<<endl;
    //...
}
 
//собственный предикат
bool pr(string a){return ("two"==a);}
 
int main()
{
    list<string> l;
    l.push_back("one");
    l.push_back("two");
    l.push_back("three");
    l.push_back("four");
 
    f(l);
 
    list<string>::iterator it;
    //iseq(l) l type list<string>
    it=find(iseq(l),"three");
    if(it!=l.end())
        cout <<"*it= "<<*it<<endl;//three
 
    //find_if
    it=find_if(iseq(l),pr);
 
    if(it!=l.end())
        cout <<"*it= "<<*it<<endl;//two
 
    return 0;
}
Тот пример что в книге рабочий, это я просто сам уже пытался функцию find_if перегрузить сам, но нифига не получается, никак не могу передать функцию в шаблон плюс еще не понятно что это за фигня встроенный массив istream??? и перегрузить для пар итераторов, ну для итераторов то вроде как чуток смутно понятно, типо должно функция iseq принимать по две пары итераторов, да нет и с итераторами не ясно. ?????

Добавлено через 10 минут
Ладно функцию я кое как передал вроде заработало, от утета от фигня не сильно понятна "для встроенных массивов istream и пар итераторов." Я понял конечно что нужно или класс перегрузить или саму функцию для итераторов, а скорее всего одновременно и класс и функцию.????

Добавлено через 3 минуты
А тут уже разобрался что имеется введу под парой итератовров, просто сделать что бы было удобно вызывать такие алгоритмы как transform или mismatch, просто их перегрузить. Отета от фигня остается не понятой "для встроенных массивов istream"

Добавлено через 20 часов 5 минут
up .
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru