Mam mały problem z kodem. Ogólnie działa jak należy ale np. po wpisaniu, że chcę dodać 3 pary, najpierw prosi o podanie wartości dla 3 pary, potem dla drugiej i na końcu dla pierwszej. Jak to odwrócić ?
Wiem, trochę się kod rozjechał bo piszę z telefonu ale czytelny jest w miarę.
#include "stdafx.h"
#include <iostream>
#include <unordered_map>
using namespace std;
class pojemnik_map
{
private:
unordered_map<int, double>* mapa; // wskaznik na mape o parach string i double
public:
pojemnik_map(); // kosntrutktor
void wyswietl(); // funkcja wysiwetlacjaca
void nowe_wartosci(); // funkcja wproawdzajaca nowe dane
~pojemnik_map() { delete mapa; }; // desktruktor czyszczacy pamiec, usuwajacy mape
};
pojemnik_map::pojemnik_map()
{
mapa = new unordered_map<int, double>; // zaalokowanie pamieci dla mapy o parach string i double
pair<int, double> para; // zainicjowanie zmiennej typu para string i double
cout << "Podaj ile par chcesz wprowadzic ? " << endl;
int size = 0;
cin >> size; // wprowadzenie ilosci par
while (size--) { // wprowadzenie danych
cout << "Podaj numer " << size + 1 << " pary" << endl;
cin >> para.first;
cout << "Podaj wartosc " << size + 1 << " pary" << endl;
cin >> para.second;
mapa->insert(para); // przypisanie wartosci do mapy
}
}
void pojemnik_map::wyswietl()
{
cout << "Wyswietlenie zawartosci:" << endl;
int temp = 0; // zmienna pomocnicza zeby wyswietlic liczbe porzadkowa
for (auto& i : *mapa) // petla zakresowa dla obiektow cpp 11
{
cout << ++temp << ": " << i.first << " = " << i.second << endl; // wyswietlenie
}
}
void pojemnik_map::nowe_wartosci()
{
cout << "Ilosc par do dodania" << endl;
int size = 0;
cin >> size;
pair<int, double> para;
while (size--) {
cout << "Podaj numer " << size + 1 << " pary" << endl;
cin >> para.first;
cout << "Podaj wartosc " << size + 1 << " pary" << endl;
cin >> para.second;
mapa->insert_or_assign(para.first, para.second); // uzycie funkcji insert_or_assign z biblioteki cpp 17, dodaje nowy klucz, a jezeli istnieje to zmienia jego wartosc
}
}
int main()
{
pojemnik_map mapa1; // stowrzenie obiektu klasy my_map
mapa1.wyswietl();
mapa1.nowe_wartosci();
mapa1.wyswietl();
return 0;
}