Как написать 3D-отображение в C ++? - PullRequest
6 голосов
/ 12 февраля 2012

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

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

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

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

Подскажите, пожалуйста, правильный способ сделать это?

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

Ответы [ 4 ]

9 голосов
/ 12 февраля 2012

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

map<string, map<string, int> > employees;
employees["person1"]["age"] = 200;
6 голосов
/ 12 февраля 2012

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

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

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

3 голосов
/ 12 февраля 2012

Вместо вложенной карты вы можете использовать кортеж в качестве ключей; (это код на 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;
}
0 голосов
/ 26 октября 2014

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

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

map<string, map<string, map<int, string> > > Employees;
Employees[“person1”][“age”][20] = "26/10/2014";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...