Как использовать шаблонные значения в качестве ключей на карте? - PullRequest
0 голосов
/ 18 октября 2011

Я пытаюсь реализовать трехмерную матрицу, используя stl::map.

У меня есть карта, чьи «ключи» являются шаблонными, а «значения» - это другие карты (для другого измерения). Вот ошибка компилятора, которую я получаю -

graph.h|37| error: ISO C++ forbids declaration of ‘map’ with no type· 

Так это правда, что я не могу иметь шаблонное значение в качестве ключей карты или есть другой способ сделать это. Вот часть моего кода, где я пытаюсь это сделать -

using namespace std;
template <class V>·
class Graph {
    ...
    map<V, map<V,int> > vertices;·
    ...
};

------ ОБНОВЛЕНИЕ:

Мой комментарий о том, что я исправил, скрыт, ошибка глупа, мне следовало использовать std::map, а не карту напрямую. Спасибо за помощь.

1 Ответ

3 голосов
/ 18 октября 2011

Так правда ли, что я не могу иметь шаблонное значение в качестве ключей карты?

Нет, такого правила не существует.Если бы существовало какое-либо такое правило, это означало бы силу общего программирования, сама цель существования шаблонов была бы бесполезна.

или есть другой способ сделать это?

У вас просто синтаксическая ошибка, потому что вы не указали карту с ее (std) пространством имен.

отлично работает для меня здесь

#include<map>

template <class V> class Graph 
{
     std::map<V, std::map<V,int> > vertices;

};

int main()
{
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...