Как написать 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;
Вместо вложенной карты вы можете использовать кортеж в качестве ключей; (это код 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";