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

Пробелемы с copy - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Копирование строки с позиции http://www.cyberforum.ru/cpp-beginners/thread390827.html
Можно ли скорировать строку в определенном месте и с ограниченым число в Си. Т.е. К примеру: привет, Вася! как дела? Должно быть скопировано "Вася" Как это сделать с помошью функций в библиотеле string.h? А то я не нашел в Интернете.
C++ Найти площади кругов, а также площадь кольца Задания: 1) Даны два круга с общим центром и радиусами R1 и R2 (R1 > R2). Найти площади этих кругов S1 и S2, а также площадь S3 кольца, внешний радиус которого равен R1, а внутренний радиус равен R2: S1 = π•(R1)2, S2 = π•(R2)2, S3 = S1 – S2. В качестве значения π использовать 3.14. 2) Дано целое число. Вывести его строку-описание вида «отрицательное четное число», «нулевое число»,... http://www.cyberforum.ru/cpp-beginners/thread390818.html
C++ Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004".
Программа компилируется нормально но потом на строчке MoveToEx(hdc,Mas.a]->x*20,Mas.a]->y*20,0); выдаёт ошибку Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004". Помогите пожалуйста заранее спасибо. #include "stdafx.h" #include <windows.h> #include "resource.h" #include <string> #define MAXPOINTS 1000 int ko,key1=0;
Дана квадратная матрица A порядка M C++
Matrix13. Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вы-вести ее элементы следующим образом («уголками»): все элементы первой строки; элементы последнего столбца, кроме первого (уже выведенного) элемента; оставшиеся элементы второй строки; оставшиеся элементы предпоследнего столбца и т. д.; последним выводится элемент AM,1. #include<iostream.h> Запрещено создавать темы с...
C++ Консольний Калк. http://www.cyberforum.ru/cpp-beginners/thread390804.html
как переделать етот колькулятор в такой чтобы он мог делать простие операцыи + , -, *, /. кстати требования , чтобы он запоминал предидущий результат. #include <iostream> #include <cmath> #include <cstdlib> #include <iostream> #include <cmath> #include <cstdlib>
C++ Имитация работы процессора Составить программу имитирующую работу процессора аккумуляторного типа при переводе прямого кода вещественных чисел в обратный код. Программа должна иметь диалоговый интерфейс. Вот как то так)) подробнее

Показать сообщение отдельно
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 268
24.11.2011, 20:50     Пробелемы с copy
Требуется написать это
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string Fam,pred;
map <string, list<string> > data;
list<string> all_stud;
ifstream FS;
        FS.open(s);
 
                 while(!FS.eof())
                 {
                    FS >> Fam;
                    FS >> pred;
                    data[pred].push_back(Fam);
 
                    list<string> :: iterator pb = all_stud.begin();
                    list<string> :: iterator pe = all_stud.end();
                    if (find(pb, pe, Fam) == pe)
                    {
                        all_stud.push_back(Fam);
                    }
 
                 }
                 FS.close();
Но без циклов! для этого хочу использовать, хм...как бы правильно назвать..."заглушку итератора"
C++
1
copy(istream_iterator<string>(FS), istream_iterator<string>(), writer(data, all_stud));
где writer - это
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
class writer : public iterator<output_iterator_tag, ????? >
{
    map <string, list<string> > &dat;
    list<string> &all;
    string Fam;
    bool flag; //true = familiya
    
public:
    writer( map <string, list<string> > &dat_, list<string> &all_): dat(dat_), all(all_)
    {
        
        flag = true;
    }
 
    writer  operator *()
    {
        return *this;
    }
 
    void operator = (string s)
    {
        if(flag)
        {
            Fam = s;
            list<string> :: iterator pb = all.begin();
            list<string> :: iterator pe = all.end();
            if (find(pb, pe, Fam) == pe)
            {
                all.push_back(Fam);
            }
            flag = !flag;
        }
        else
        {
            dat[s].push_back(Fam);
            flag = !flag;
        }
    }
    void operator ++()
    {
 
    }
};
на месте ????? должен быть тип, на который указывает итератор. Но я же делаю заглушку...и поэтому мой итератор явно ни на какой тип не указывает. Что там писать?

Добавлено через 6 часов 33 минуты
..................................
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru