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

Не работают методы в классе с контейнером map - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Какую тему выбрать для курсовой... http://www.cyberforum.ru/cpp-beginners/thread376450.html
Новичок в С++. Нужна программа для курсовой чтобы она была 3х мерной. Что, какую фигуру или вещь можно описать НОВИЧКУ? Чтоб было легко расписать? Программа для консольной версии С++ Добавлено через 12 минут Кто нибудь?
C++ Cоздание итератора с использованием шаблонов Привет всем! Возникла следующая проблема в шаблонной функции класса возникоет следующая проблемма: expected `;' before 'p' на строчке кода: list<T*>::iterator p; Такая строчка встречается 2 раза и каждый раз такая ошибка. Причем эта ошибка есть только в Qt и XCode, в VS такой проблемы нет. Предполагаю, что это особенность GCC, который используется в Qt и XCode. Хотелось бы узнать в... http://www.cyberforum.ru/cpp-beginners/thread376432.html
C++ Определить, можно ли упаковать коробку в посылку
Доброго времени суток!Помогите с решение контрольной. 1. Можно ли коробку размером упаковать в посылку размером ? «Углом» укладывать нельзя. 2. Каждый из элементов xi массива X(n) заменить минимальным среди первых i элементов этого массива. 3. В файле дан исходный текст программы на каком-либо языке программирования (Паскаль, Бейсик). Уровнем комментированности текста будем считать...
C++ error C2065: wmId: необъявленный идентификатор
Всем привет) Вот выдает 3 ошибки.... Помогите пож, спасибо заранее за ваши ответы) Ошибки: 1>c:\my documents\visual studio 2008\projects\laba_1_spro\laba_1_spro\laba_1_spro.cpp(112) : error C2065: wmId: необъявленный идентификатор 1>c:\my documents\visual studio 2008\projects\laba_1_spro\laba_1_spro\laba_1_spro.cpp(113) : error C2065: wmEvent: необъявленный идентификатор 1>c:\my...
C++ C++ Редактирование символьного массива с помощью указателей http://www.cyberforum.ru/cpp-beginners/thread376406.html
str = new char(strlen(tmp)+count+1); strcpy_s(str, strlen(tmp)+1, tmp); tmp; сам массив куда ввели предложение посчитали количество count вхождений в него символа + нулевой байт. В указатель запишем блок памяти чтоб решить эту задачу. while(*st != *p_st) { if(*st == symb)
C++ Передача значения переменной из одной формы в другую собственно, название темы говорит само за себя) пишу, мол, #include <vcl.h> #pragma hdrstop #include "Unit10.h" #include "Unit11.h" подробнее

Показать сообщение отдельно
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
02.11.2011, 01:10     Не работают методы в классе с контейнером map
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <map>
#include <iostream>
#include <string>
 
class Superclass
{
    map<long,long> a;
    map<long,long> b;//ñîçäГ*Г*ГЁГҐ îáúåêòГ* ГЄГ®Г*ГІГҐГ©Г*ГҐГ°Г* Гў ñîîòâåñòâèè Г± ГўГ*ðèГ*Г*òîì
    map<long,long>::iterator it1;
    map<long,long>::iterator it2;
    pair<map<long,long>::iterator,bool> ret1;
    pair<map<long,long>::iterator,bool> ret2;
public:
    Superclass(){};
    bool AddToA(long c,long d)
    {
       ret1=a.insert(pair<long,long>(c,d));
       return ret1.second;
    }
    bool AddToB(long c,long d)
    {
       ret2=b.insert(pair<long,long>(c,d));
       return ret2.second;
    }
 
    map<long,long> GetContA()
    {
       return a;
    }
    map<long,long> GetContB()
    {
       return b;
    }
    string EraserA(long key)
    {
       a.erase(key);
       return "Element deleted";
    }
    string EraserB(long key)//ГіГ¤Г*ëåГ*ГЁГҐ ýëåìåГ*ГІГ* ГЇГ® êëþ÷Г*
    {
       b.erase(key);
       return "Elem deleted";
    }
    void BiggerEraserA(long key)
    {
       it1=a.find(key);
       a.erase(it1,a.end());
    }
    void BiggerEraserB(long key) //ГіГ¤Г*ëåГ*ГЁГҐ ГўГ±ГҐГµ ýëåìåГ*òîâ ïîñëå êëþ÷Г* Гў B
    {
       it2=b.find(key);
       b.erase(it2,b.end());
    }
    void BEditot(long key,long val)//èçìåГ*ГҐГ*ГЁГҐ ýëåìåГ*ГІГ* Гў B
    {
       b[key]=val;
    }
    void AEditor(long key,long val)
    {
       a[key]=val;
    }
    void EraseAdd(long key) //ГіГ¤Г*ëåГ*ГЁГҐ ГЇГ® Г§Г*Г¤Г*Г*Г*îìó êëþ÷ó ýëåìåГ*ГІГ* ГЁГµ ГЂ ГЁ êîïèðîâГ*Г*ГЁГҐ ГІГіГ¤Г* ГўГ±ГҐ ýëåìåГ*òîâ ГЁГ§ B
    {
       it1=a.find(key);
       a.erase(it1,a.end());
       it2=b.begin();
       a.insert(a.find(key),b.end());
    }
 
 
};
 
int main()
{
    Superclass *a=new Superclass();
    bool x=a->AddToA(3,4);
    a->AddToA(5,6);
    a->AddToA(4,6);
    a->AddToA(7,8);
    a->EraserA(5);
    bool y=a->AddToB(3,4);
    a->AddToB(7,8);
    a->AddToB(8,9);
    a->AddToB(10,11);
    a->AddToA(10,5);
    map<long,long> c=a->GetContA();
    map<long,long> c1=a->GetContB();
    map<long,long>::iterator iter1;
    map<long,long>::iterator iter2;
    cout<<"A map"<<endl;
    for(iter1=c.begin();iter1!=c.end();iter1++)
    cout<<(*iter1).first<<"=>"<<(*iter1).second<<endl;
    cout<<"B map"<<endl;
    for(iter2=c1.begin();iter2!=c1.end();iter2++)
    cout<<(*iter2).first<<"=>"<<(*iter2).second<<endl;
    cout<<"Erase 7 from B"<<endl;
    cout<<a->EraserB(7)<<endl;
    for(iter2=a->GetContB().begin();iter2!=a->GetContB().end();iter2++)
    cout<<(*iter2).first<<"=>"<<(*iter2).second<<endl;
    a->BEditot(8,1000);
    a->AddToB(4,6);
    cout<<"After editing"<<endl;
    for(iter1=a->GetContB().begin();iter1!=a->GetContB().end();iter1++)
    cout<<(*iter1).first<<"=>"<<(*iter1).second<<endl;
    cout<<"Erase after"<<endl;
    a->BiggerEraserB(3);
    cout<<"After deleting"<<endl;
    for(iter1=a->GetContB().begin();iter1!=a->GetContB().end();iter1++)
    cout<<(*iter1).first<<"=>"<<(*iter1).second<<endl;
    cout<<"Erase add"<<endl;
    a->EraseAdd(4);
//  map<long,long> k=a->GetContA();
    for(iter1=a->GetContA().begin();iter1!=a->GetContA().end();iter1++)
    cout<<(*iter1).first<<"=>"<<(*iter1).second<<endl;
    return 0;
}
по одному элементу удаляет и изменяет.
но не работает метод который удаляет все элементы после заданного(BiggerEraseB в данном случае). А также метод в котором удаляются все элементы после заданного из контейнера а и затем в контейнер a добавляются все элементы из контейнера b. Выводит ничего.

Как удалить n элементов после заданного из контейнера?циклом или есть какой-то встроенный метод в классе map?

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