Вы можете добавить дополнительный параметр шаблона шаблона, например:
template<template <typename...> typename Container, typename T>
class Node {
public:
T data;
Container<Node*> children;
};
, а затем создать экземпляр Node
с разными контейнерами:
Node<std::vector, int> n;
Node<std::set, int> m;
Однако, если вы хотите сделать что-то вроде
Node<std::map, int> m;
, вы столкнетесь с проблемами, потому что map
требует как минимум 2 параметров шаблона, а вы используете только Node*
.
Перед тем, как опробовать какую-либо конкретную стратегию реализации, я предлагаю вам подумать о том, как вы хотите использовать класс Node
, поскольку это будет информировать реализацию.