Я пытаюсь реализовать сложную структуру для своего проекта, но не знаю, что делать дальше.
Сама структура представляет собой дерево, в котором каждый узел имеет строковый идентификатор и либо дерево или контейнер для одного из поддерживаемых типов данных, что-то вроде json data.
tree: {
value1: 4,
value2: {
value3: 40.2f,
}
}
Теперь мне удалось заставить что-то работать в C, но я хотел бы узнать больше о C ++ и шаблоны, поэтому я пытаюсь сделать здесь что-нибудь более чистое. Я мог бы использовать очень мощный nlohmann json и надеяться достичь чего-то подобного, но я бы ничего не узнал.
Мой большой вопрос заключается в том, как справиться с тем фактом, что конечные точки имеют несколько типы. Я имел в виду это, входя в проект:
template<class T>
class basic_node {
private:
std::string id;
std::map<const std::string&, T> contents;
};
Но определение дерева вызовет несколько проблем, T
будет повторяться, как высота дерева, и может содержать только один единственный тип данных .
Теперь, покопавшись в коде, я обнаружил следующее:
template<template<typename U, typename V, typename... Args> class ObjectType =
std::map,
template<typename U, typename... Args> class ArrayType = std::vector,
class StringType = std::string, class BooleanType = bool,
class NumberIntegerType = std::int64_t,
class NumberUnsignedType = std::uint64_t,
class NumberFloatType = double,
template<typename U> class AllocatorType = std::allocator,
template<typename T, typename SFINAE = void> class JSONSerializer =
adl_serializer>
class basic_json;
Нужно ли мне что-то подобное, чтобы разрешить многотипные деревья?