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

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

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

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

03.06.2013, 12:44. Просмотров 273. Ответов 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;
             }
          }
это я так пузырьковую сортировку реализовала))))
вот что пишет дословно
0
Миниатюры
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? (C++):

Массив в структуре. invalid use of non-static data member - C++
Добрый день. Есть структура, понадобилось добавить в неё массив с дин. размером. struct MyStruct { // ... uint16_t...

Массив в классе. Ошибка error: invalid use of non-static data member - C++
class MyClass { // ... private: int mont; // число дней в месяце int days; };Возвращает ошибку error: invalid use...

Ошибка при сборке проекта - invalid use of non-static data member 'MainWindow::test' - C++
Собственно, сабж. Собираю в QtCreator, но по-моему ошибка не имеет к нему никакого отношения. Возможно я просто не понимаю, как правильно...

Массивы,инициализация(qbasic'овские read,data) - C++
Недавно начал изучать С++. Маленький совет: книги не покупай, а скачивай через интернет.(если есть возможность конечно) Некоторые...

Assignment of member 'Delegate::editor' in read-only object - C++ Qt
Добрый день! У меня есть класс Delegate, в нем указатель на виджет m_editor .h файл: class Delegate : public QStyledItemDelegate { ...

Compile error method data member not found - MS Access
Private Sub cmbGroup_AfterUpdate() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New...

5
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
03.06.2013, 12:48 #2
лилиэн, Нельзя менять ключ в мапе, без удаления и новой вставки.
0
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
03.06.2013, 13:24  [ТС] #3
Цитата Сообщение от ForEveR Посмотреть сообщение
лилиэн, Нельзя менять ключ в мапе, без удаления и новой вставки.
если не сложно можете пример ...как поменять местами 2 записи в map
даже допустим 1ю и последнюю
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
03.06.2013, 13:38 #4
лилиэн, Никак. map упорядоченный контейнер.
Поменять можно нестандартным путем, используя const_cast-ы и в итоге разбалансировать дерево, на котором построен map.
0
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
03.06.2013, 14:02  [ТС] #5
Цитата Сообщение от ForEveR Посмотреть сообщение
лилиэн, Никак. map упорядоченный контейнер.
Поменять можно нестандартным путем, используя const_cast-ы и в итоге разбалансировать дерево, на котором построен map.
тоесть тогда эту задачу так не решить что ли.... а есть какие то варианты как?
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
03.06.2013, 14:12 #6
лилиэн, map УЖЕ отсортирован (но в этом случае резоннее использовать multimap). просто задать компаратор. ну или использовать не мап.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 14:12
Привет! Вот еще темы с ответами:

DATA 1,2,3 READ x,y,z в VBA - VBA
В QuickBasic'е были замечательные объявления: DATA 3,'строка',3.14 READ x,str,yА как это сделать в VBA? И можно ли вообще?

read data from db into JCombobox java - Java
Подскажите, как можно прочитать данные из БД(SQL) в JCombobox? підкажіть як можна прочитати дані з бази даних(SQL) в JCombobox?

Аналог READ и DATA в VB 2008 - Visual Basic .NET
Всем доброго времени суток! В Basic оператор READ читает данные из оператора DATA. В VB 2008 такое чтение не проходит. Вопрос, -...

Google chrome cannot read and write to its data directory [Error] - Windows 8, 8.1
Достался мне компьютер от пользователя который не знает что сделал и как так получилось. При попытке запустить google chrome получаю...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
03.06.2013, 14:12
Ответ Создать тему
Опции темы

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