#include #include #include #include using namespace std; struct Stuff { Stuff(string n, int v) : name{n}, value{v} {} string name; int value; }; class Warehouse { public: Warehouse(): stuffs{} {} Warehouse(vector s) : stuffs{s} {} void store(Stuff const& stuff) { stuffs.push_back(stuff); } Warehouse operator+(Warehouse const& rhs) const { Warehouse newWarehouse{stuffs}; for(Stuff const& stuff: rhs.stuffs) { bool exists{false}; for(Stuff & existingstuff: newWarehouse.stuffs) { if( existingstuff.name == stuff.name ) { exists = true; existingstuff.value += stuff.value; } } if( !exists ) { newWarehouse.store(stuff); } } return newWarehouse; } friend ostream& operator<<(ostream& ostream, Warehouse const& rhs) { for(auto stuff : rhs.stuffs) { ostream << stuff.name << ": " << stuff.value << endl; } return ostream; } private: vector stuffs; }; int main() { /* Skapa ett tomt lager: */ Warehouse warehouse1{}; /* Lägg till följande saker en i taget saker | värde ================= Brädspel | 7250 Lås | 7500 */ warehouse1.store(Stuff{"Boardgames", 7250}); warehouse1.store(Stuff{"Locks", 7500}); /* Skriv ut det första skapade lagret */ cout << "Warehouse 1: " << '\n' << warehouse1 << endl; /* Skapa en behållare med följande saker i: saker | värde ================= Bilar | 100000 Pennor | 15000 Brädspel | 2500 */ vector contents_warehouse2{}; contents_warehouse2.emplace_back("Cars", 100000); contents_warehouse2.emplace_back("Pens", 15000); contents_warehouse2.emplace_back("Boardgames", 2500); /* Skapa ett lager med behållaren ovan */ Warehouse warehouse2{contents_warehouse2}; /* Skriv ut det andra skapade lagret */ cout << "Warehouse 2: " << '\n' << warehouse2 << endl; /* Slå ihop det första och andra lagret och skriv ut innehållet */ cout << "Warehouse combined: " << '\n' << warehouse1 + warehouse2 << endl; }