153 / 136 / 45
Регистрация: 15.02.2010
Сообщений: 745
1

Не получается вывести и удалить последний элемент контейнера map

24.01.2015, 20:02. Показов 3225. Ответов 3
Метки нет (Все метки)

Не получается вывести и удалить последний элемент контейнера map.
Для первого (begin) всё работает. А для последнего (end) даже не выводит значение. Подскажите, что не так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <map>
using namespace std;
int main()
{
    int N,n;
    cin >> N;
    map <int,int> mp;
 
for(int i=0;i<N;i++)
        {
            cin >> n;
            mp[n]++;
        }
 
cout <<mp.begin()->first << "-" << mp.begin()->second << endl;
mp.erase(mp.begin());
cout <<mp.end()->first << "-" << mp.end()->second << endl;
mp.erase(mp.end());
 
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2015, 20:02
Ответы с готовыми решениями:

Как удалить последний элемент контейнера vector
Доброго вечера всем!!!Подскажите пожалуйста как удалить последний элемент контейнера...

Вывести элемент контейнера map по заданному ключу
map&lt;string,int&gt; words; string word; while (cin&gt;&gt; word , word !=&quot;#&quot;){ words++; } есть...

Удалить элементы из контейнера map
#include &lt;iostream&gt; #include &lt;map&gt; using namespace std; int main() { map&lt;int, int&gt; map1; ...

Задача Иосифа Флавия. Удалить каждый второй элемент из списка и в конце вывести на экран последний оставшийся элемент
Создать циклический список, в котором находятся элементы от 1 до N. Нужно написать программу,...

3
102 / 44 / 18
Регистрация: 08.01.2015
Сообщений: 97
24.01.2015, 20:08 2
Лучший ответ Сообщение было отмечено LVV как решение

Решение

mp.end() это не последний, это следующий за последним.

Цитата Сообщение от LVV Посмотреть сообщение
mp.erase(mp.end());
C++
1
2
3
map <int,int> ::iterator it = mp.end();
it--;
mp.erase(it);
2
153 / 136 / 45
Регистрация: 15.02.2010
Сообщений: 745
24.01.2015, 20:37  [ТС] 3
Всё равно не работает:
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
#include <iostream>
#include <map>
using namespace std;
int main()
{
int N,n;
    cin >> N;
    map <int,int> mp;
    map <int,int>::iterator it;
    
for(int i=0;i<N;i++)
        {
            cin >> n;
            mp[n]++;
        }
 
it=mp.begin();
cout <<it->first << "-" << it->second << endl;
mp.erase(it);
cout << it->first << "-" << it->second << endl;
    
it=mp.end();
it--;
cout <<endl<<it->first << "-" << it->second << endl;
mp.erase(it);
cout <<it->first << "-" << it->second << endl; 
 
return 0;
}
0
102 / 44 / 18
Регистрация: 08.01.2015
Сообщений: 97
24.01.2015, 20:51 4
Лучший ответ Сообщение было отмечено LVV как решение

Решение

Цитата Сообщение от LVV Посмотреть сообщение
Всё равно не работает:
Вы обращаетесь к удаленным элементам.
Цитата Сообщение от LVV Посмотреть сообщение
mp.erase(it);
cout << it->first << "-" << it->second << endl;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2015, 20:51
Помогаю со студенческими работами здесь

Map : как по номеру элемента получить сам элемент контейнера?
Додумался только до такого: int n = 2; std::map&lt; String, String &gt; MASS; std::map&lt;String,...

Из каждого элемента контейнера map вычесть среднее арифметическое контейнера
Контейнер map, тип элементов Int 3.Из каждого элемента вычесть среднее арифметическое контейнера

Как из map выбрать последний элемент?
Как из map выбрать последний елемент? map.end()-1 некатит

Не получается удалить минимальный элемент в массиве и вывести новый. Как сделать это?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;locale&gt; using namespace std; int main() {...

В множестве set или в контейнере map всегда остается только последний элемент
При вызове функции с параметрами (declare some_string) в множество добавляется элемент, и он...

Как вставить элемент и вывести элементы на экран в map<string, map<string,int>> ?
У меня есть map&lt;string, map&lt;string,int&gt;&gt;, в него надо добавить элементы (типа Ivanov potato 200)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru