Я просматриваю код rapidjson для возможной интеграции. Я вижу, что благодаря новому С++ 11 вы действительно можете создавать ассоциативные массивы в С++, хотя я не уверен в преимуществах скорости. Однако в их примере кода я вижу это:
Document document; // Default template parameter uses UTF8 and MemoryPoolAllocator.
char buffer[sizeof(json)];
memcpy(buffer, json, sizeof(json));
if (document.ParseInsitu(buffer).HasParseError())
return 1;
printf("\nAccess values in document:\n");
assert(document.IsObject()); // Document is a JSON value represents the root of DOM. Root can be either an object or array.
assert(document.HasMember("hello"));
assert(document["hello"].IsString());
printf("hello = %s\n", document["hello"].GetString());
Похоже, что Document — это класс, у которого есть вызываемые методы, но в то же время он может получить к нему доступ, используя document["hello"] как ассоциативный массив? Это то, что здесь происходит?
std::map
иstd::unordered_map
), так что это не должно удивлять... - person rlbond   schedule 09.09.2015