Как написать 3D-отображение в C++?

Подскажите, пожалуйста, как я могу написать многомерную карту. Для двухмерной карты я сделал следующее:

map<string, int> Employees
Employees[“person1”] = 200;

Я пытался использовать что-то похожее на следующее для 3D-карт.

map<string, string, int> Employees;
Employees[“person1”, “age”] = 200;

Можете ли вы сказать мне правильный способ сделать это?

и есть ли способ, которым я могу инициализировать все элементы карты, чтобы быть 0? Так же, как на массиве мы можем сказать int array[10]={0};

4 ответа

Решение

Вам нужно создать карту таких карт.

map<string, map<string, int> > employees;
employees["person1"]["age"] = 200;

Вы можете использовать pair класс utility библиотека для объединения двух объектов:

map<pair<string, string>, int> Employees;
Employees[make_pair("person1", "age")] = 200;

См. http://www.cplusplus.com/reference/std/utility/pair/

Вместо вложенной карты вы можете использовать кортеж в качестве ключей; (это код C++11, вы можете сделать то же самое с boost::tuple также).

#include<map>
#include<tuple>
#include<string>
using namespace std;
map<tuple<string,string>,int> m;
int main(){
    m[make_tuple("person1","age")]=33;
}

То, что вы делаете здесь, это не 3D-отображение, а 2D-отображение, как использовать stl::map в качестве двухмерного массива

Правильное 3D отображение будет похоже

map<string, map<string, map<int, string> > > Employees;
Employees[“person1”][“age”][20] = "26/10/2014";
Другие вопросы по тегам