Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
LVV
98 / 102 / 39
Регистрация: 15.02.2010
Сообщений: 399
#1

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

24.01.2015, 20:02. Просмотров 571. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2015, 20:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не получается вывести и удалить последний элемент контейнера map (C++):

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

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

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

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

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

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

3
Phoenix_Max
101 / 43 / 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
LVV
98 / 102 / 39
Регистрация: 15.02.2010
Сообщений: 399
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
Phoenix_Max
101 / 43 / 18
Регистрация: 08.01.2015
Сообщений: 97
24.01.2015, 20:51 #4
Лучший ответ Сообщение было отмечено LVV как решение

Решение

Цитата Сообщение от LVV Посмотреть сообщение
Всё равно не работает:
Вы обращаетесь к удаленным элементам.
Цитата Сообщение от LVV Посмотреть сообщение
mp.erase(it);
cout << it->first << "-" << it->second << endl;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2015, 20:51
Привет! Вот еще темы с решениями:

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

Вывести содержимое списка в следующем порядке: первый элемент, последний элемент, второй элемент, предпоследни
#include &lt;iostream&gt; #include &lt;list&gt; #include &lt;iterator&gt; void...

Не получается. Умножение елементов массива на последний элемент
#include &lt;iostream&gt; using namespace std; int main() { int mas; int i;...

Найти максимальный элемент массива и вывести последний четный элемент
Короче нужно чтобы програма нашла максимальный елемент масива и выводила на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru