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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
#1

map assigment of read only data member или WTF? - C++

03.06.2013, 12:44. Просмотров 250. Ответов 5
Метки нет (Все метки)

задача:из acm.timus.ru
1100. Таблица результатов
Ограничение времени: 1.0 секунды
Ограничение памяти: 16 МБ
Старое программное обеспечение для проведения соревнований использует пузырьковую сортировку для создания таблицы результатов. Однако сейчас команд слишком много, и программное обеспечение работает слишком медленно. Вас попросили написать программу, которая создаёт такую же таблицу результатов, как и старое программное обеспечение, но быстро.
Исходные данные
Первая строка входных данных содержит только целое число 1 < N ≤ 150 000 — количество команд. Каждая из следующих N строк содержит два целых числа: 1 ≤ ID ≤ 107 и 0 ≤ M ≤ 100. ID — уникальный номер команды, а M — количество решённых этой командой задач.
Результат
Вывод должен содержать N строк с двумя целыми числами ID и M в каждой. Строки должны быть отсортированы в порядке убывания M с помощью пузырьковой сортировки (или аналога).


вот что я настрокала с использованием 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
#include<iostream.h>
#include<map.h>
using namespace std;
int main()
{
    long comands;
    cin>>comands;
    map<int,int>table;
    map<int,int>::iterator curr;
    map<int,int>::iterator tmp;
    int i=0;
    for(;i<comands;i++)
    {
                       int key,value;
                       cin>>key>>value;
                       table[key]=value;
    }
    for(curr=table.begin();curr!=table.end();curr++)
       for(tmp=(++curr);tmp!=table.end();tmp++)
          {
             if( (*tmp).second>(*curr).second)
             {
                 int tmpf,tmps;
                 tmpf=(*tmp).first;
                 tmps=(*tmp).second;
                 (*tmp).first=(*curr).first;
                 (*tmp).second=(*curr).second;
                 (*curr).first=tmpf;
                 (*curr).second=tmps;
             }
          }
    for(curr=table.begin();curr!=table.end();curr++)
       cout<<(*curr).first<<" "<<(*curr).second;
 system("pause");
 return 0;   
}

выдает ошибку в этом месте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 for(curr=table.begin();curr!=table.end();curr++)
       for(tmp=(++curr);tmp!=table.end();tmp++)
          {
             if( (*tmp).second>(*curr).second)
             {
                 int tmpf,tmps;
                 tmpf=(*tmp).first;
                 tmps=(*tmp).second;
                 (*tmp).first=(*curr).first;
                 (*tmp).second=(*curr).second;
                 (*curr).first=tmpf;
                 (*curr).second=tmps;
             }
          }
это я так пузырьковую сортировку реализовала))))
вот что пишет дословно
Миниатюры
map assigment of read only data member или WTF?  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2013, 12:44     map assigment of read only data member или WTF?
Посмотрите здесь:

Массивы,инициализация(qbasic'овские read,data) C++
Ошибка non-value in assigment C++
Очередное WTF ))) C++
C++ map<Int,MYMAP>, или мап хранящий мап
ООП + полиморфизм = wtf? C++
Расширение языка С. WTF? C++
Массив в классе. Ошибка error: invalid use of non-static data member C++
error: cannot convert to in assigment C++
Map iterator обращение к предыдущему или последующему элементу C++
Ошибки Constant out of range in comparison и Possibly incorrect assigment C++
Массив в структуре. invalid use of non-static data member C++
Ошибка при сборке проекта - invalid use of non-static data member 'MainWindow::test' C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
03.06.2013, 12:48     map assigment of read only data member или WTF? #2
лилиэн, Нельзя менять ключ в мапе, без удаления и новой вставки.
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
03.06.2013, 13:24  [ТС]     map assigment of read only data member или WTF? #3
Цитата Сообщение от ForEveR Посмотреть сообщение
лилиэн, Нельзя менять ключ в мапе, без удаления и новой вставки.
если не сложно можете пример ...как поменять местами 2 записи в map
даже допустим 1ю и последнюю
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
03.06.2013, 13:38     map assigment of read only data member или WTF? #4
лилиэн, Никак. map упорядоченный контейнер.
Поменять можно нестандартным путем, используя const_cast-ы и в итоге разбалансировать дерево, на котором построен map.
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
03.06.2013, 14:02  [ТС]     map assigment of read only data member или WTF? #5
Цитата Сообщение от ForEveR Посмотреть сообщение
лилиэн, Никак. map упорядоченный контейнер.
Поменять можно нестандартным путем, используя const_cast-ы и в итоге разбалансировать дерево, на котором построен map.
тоесть тогда эту задачу так не решить что ли.... а есть какие то варианты как?
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
03.06.2013, 14:12     map assigment of read only data member или WTF? #6
лилиэн, map УЖЕ отсортирован (но в этом случае резоннее использовать multimap). просто задать компаратор. ну или использовать не мап.
Yandex
Объявления
03.06.2013, 14:12     map assigment of read only data member или WTF?
Ответ Создать тему
Опции темы

Текущее время: 00:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru