2016-04-27 6 views
0

В шахматах каждый тип монеты имеет некоторый вес. Учитывая имя монеты и вес для монеты, напишите код C++, чтобы напечатать название монет в порядке возрастания их веса. Предположим, что вес каждой монеты уникален. Я хочу воспользоваться картойошибка в итерационных картах для ввода

Моих кодов не здесь

#include <iostream> 
#include <map> 
using namespace std; 
int main(){ 
    int n,i=0; 
    char name; 
    int weight; 
    cin>>n; 

    class std::map<char,int> coins; 
    while(i<n) 
    { 
       i++; 
       cin>>name; 
       cin>>weight; 
       coins[name]=weight; 
       } 
    coins.sort(coins.begin(),coins.end(),weight); 
    while(i<n){ 
       i++; 
       cout<<coins; 
       } 
+1

1) Что вы сделали? 2) Что вы ожидали? 3) Что на самом деле произошло? – immibis

+0

Каков ваш вопрос? Если есть ошибка - как она проявляется? Есть ли сообщение об ошибке? Если это так, разместите текст .... –

+0

Вам нужно внести несколько изменений в свой код. Начнем с того, что ваша функция 'sort()' не будет работать - как она узнает, что вы имеете в виду, когда произносите sort by * weight *. Затем google 'iterators'. Итераторы - это то, что вам нужно. –

ответ

0

Вы не можете сортировать map. Элементы уже отсортированы в порядке , определяемом ключом каждого элемента.

Если гарантируется что каждая часть будет иметь уникальный вес, ни один такой же, как и любой другой, , то вы можете использовать weight вместо name, как ключ в карте типа std::map<int,char>. Тогда простое повторение карты даст вам элементы в порядке увеличения веса.

Но если вы сделаете это и, если это когда-нибудь случится, что кто-то указывает две части, которые имеют одинаковый вес в входе в программу, одной из частей будут потеряны и не будут появляться на всех в выходе список.

По причине только что упомянутого, используя map этот способ имеет плохой «запах кода», и я бы не хотел его использовать в реальной жизни. Я также не решаюсь дать это как ответ на упражнение в курсе программирования.

Если вы используете multimap вместо map, однако, вы можете иметь несколько элементов с одинаковым ключом, все еще отсортированных по порядку их ключей. Это похоже на гораздо лучшую идею.

0

Нет необходимости сортировки. Необходимо сортировать только список. Карты по умолчанию сохраняют данные в отсортированном формате

Смежные вопросы