Параметры шаблона в классе графика на основе класса карты STL

Я пишу заголовочный файл для простого класса графа, реализованного с использованием класса карты STL. Тем не менее, у меня возникают проблемы с параметрами шаблона, мне кажется, что я не могу объявить векторные объекты и объекты карты «без типа», но я не вижу, как я не даю ему требуемый тип. Также классы вектора и карты включены в директивы. private: закомментировано для тестирования. Я чувствую, что это какая-то синтаксическая ошибка.

Graph.h

#include <iostream>
#include <cstdlib>
#include <vector>
#include <map>

template <typename T>
class Graph
{
public:
Graph();
Graph(const Graph<T>& other);
Graph& operator=(const Graph<T>& other);
~Graph();

vector<T> AdjacentNodes(const T& n);

//private:
map<T, vector<T>> m;
};

0

Решение

Чтобы использовать карту и векторный класс, вам нужно добавить ниже заголовочные файлы

#include <map>
#include <vector>

а также map и vector являются частью пространства имен std. поэтому вам нужно использовать std :: map, std :: vector.

1

Другие решения

(следующий блок взят из http://www.cplusplus.com/reference/map/map/ , который я предлагаю вам проверить!)

template < class Key,                                     // map::key_type
class T,                                       // map::mapped_type
class Compare = less<Key>,                     // map::key_compare
class Alloc = allocator<pair<const Key,T> >    // map::allocator_type
>

Прежде всего, убедитесь, что вы поставили «using namespace std;» в верхней части или добавьте стандартные элементы, такие как вектор карты с std::

Во-вторых, как показано в шаблоне выше, если ваш typename T это не тип данных, для которого std::less определено, что вам нужно создать собственную функцию сравнения (может быть указателем функции или объектом функции) и ввести ее в качестве третьего аргумента шаблона.

Наконец, будьте осторожны с >> в map<T, vector<T>> m; если вы используете старые компиляторы, вам нужно будет вставить пробел между двумя последними >«s

0

По вопросам рекламы [email protected]