#include #include #include #include #include #include #include #include using namespace std; multimap> tickerMapByVolume; unordered_map tickerMapByTicker; void execute_trade(string ticker, int32_t volume) { const auto& iterT = tickerMapByTicker.find(ticker); if (iterT == tickerMapByTicker.end()) { tickerMapByTicker[ticker] = volume; tickerMapByVolume.insert(pair(volume, ticker)); } else { auto range = tickerMapByVolume.equal_range(iterT->second); for (auto iterV = range.first; iterV != range.second; iterV++ ) { if (iterV->second == ticker) { tickerMapByVolume.erase(iterV); break; } } iterT->second += volume; tickerMapByVolume.insert(pair(iterT->second, ticker)); } } int main(int argc, char* argv[]) { cout << "starting program" << endl; execute_trade("MSFT", 400); execute_trade("IBM", 1000); execute_trade("AAPL", 500); execute_trade("AAPL", 600); execute_trade("NFLX", 1000); execute_trade("AMZN", 700); execute_trade("GOGL", 300); for ( const auto& i : tickerMapByTicker) cout<