Создание в C #, C ++ и java версии со строгой типизацией слабой типизированной структуры Python

В python у меня есть следующее:

graph = {}

graph[1] = {}
graph[2] = {}
graph[3] = {}

graph[1][3] = graph[3]

graph[2][1] = graph[1]
graph[2][3] = graph[3]

graph[3][2] = graph[2]

это структура для представления графа, и я считаю ее хорошей, потому что ее структура такая же, как у одного из его узлов, поэтому я могу использовать ее напрямую, чтобы инициировать поиск (как в разделе «Сначала в глубину»). Его печатная версия:

{1: {3: {2: {1: {...}, 3: {...}}}}, 2: {1: {3: {2: {...}}}, 3: {2: {...}}}, 3: {
2: {1: {3: {...}}, 3: {...}}}}

И ее можно использовать как:

graph[1][3][2][3][2][1][3][2][1][3][2].keys()

Теперь мне любопытно узнать, как бы можно было реализовать ее на C ++, C # и Java, не прибегая к уловкам "Object", которые заполнили бы код с уродливыми приведениями. Что касается C ++, я думал о программировании мета-шаблонов, но это могло бы генерировать "конечные типы данных", когда требуется что-то вроде

map<int,map<int,...>> or map<int,...>
5
задан user246100 13 December 2011 в 19:29
поделиться