#include <iostream>
#include <map>
#include <string>
struct OrderBook {
std::string symbol;
OrderBook(std::string symbol) : symbol(symbol) {}
void addOrder(std::string received_order) {
std::cout << "adding order '" << received_order << "' into symbol '" << symbol << "'";
}
};
int main() {
std::map<std::string, OrderBook> buy_side_symbols;
std::string symbol = "the symbol";
auto symbol_iter = buy_side_symbols.find(symbol);
if (symbol_iter == buy_side_symbols.end())
symbol_iter = buy_side_symbols.emplace(symbol, symbol).first;
std::string received_order = "some book";
symbol_iter->second.addOrder(received_order);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgoKc3RydWN0IE9yZGVyQm9vayB7CglzdGQ6OnN0cmluZyBzeW1ib2w7CglPcmRlckJvb2soc3RkOjpzdHJpbmcgc3ltYm9sKSA6IHN5bWJvbChzeW1ib2wpIHt9Cgl2b2lkIGFkZE9yZGVyKHN0ZDo6c3RyaW5nIHJlY2VpdmVkX29yZGVyKSB7CgkJc3RkOjpjb3V0IDw8ICJhZGRpbmcgb3JkZXIgJyIgPDwgcmVjZWl2ZWRfb3JkZXIgPDwgIicgaW50byBzeW1ib2wgJyIgPDwgc3ltYm9sIDw8ICInIjsKCX0KfTsKCmludCBtYWluKCkgewoJc3RkOjptYXA8c3RkOjpzdHJpbmcsIE9yZGVyQm9vaz4gYnV5X3NpZGVfc3ltYm9sczsKCXN0ZDo6c3RyaW5nIHN5bWJvbCA9ICJ0aGUgc3ltYm9sIjsKCglhdXRvIHN5bWJvbF9pdGVyID0gYnV5X3NpZGVfc3ltYm9scy5maW5kKHN5bWJvbCk7CgoJaWYgKHN5bWJvbF9pdGVyID09IGJ1eV9zaWRlX3N5bWJvbHMuZW5kKCkpCiAgICAJc3ltYm9sX2l0ZXIgPSBidXlfc2lkZV9zeW1ib2xzLmVtcGxhY2Uoc3ltYm9sLCBzeW1ib2wpLmZpcnN0OwoKCXN0ZDo6c3RyaW5nIHJlY2VpdmVkX29yZGVyID0gInNvbWUgYm9vayI7CglzeW1ib2xfaXRlci0+c2Vjb25kLmFkZE9yZGVyKHJlY2VpdmVkX29yZGVyKTsKCglyZXR1cm4gMDsKfQ==