如何使用模板化值作为地图中的键?

发布于 2024-12-10 14:29:38 字数 523 浏览 0 评论 0原文

我正在尝试使用 stl::map 实现 3 维矩阵。

我有一个地图,其“键”是模板化的,“值”是其他地图(对于其他维度)。这是我得到的编译器错误 -

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< /code> 而不是直接映射。谢谢你的帮助。

Im trying to implement a 3 dimensional matrix using stl::map.

I have a map whose "keys" are templated and "values" are other maps(for the other dimension). Here is the compiler error I get-

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

So is it true that I cannot have a templated value as a map's keys or is there another way to do it. Here is the part of my code where Im attempting to do so-

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

------ UPDATE:

My comment saying I fixed it is being hidden, the mistake is silly, I should have been using std::map and not map directly. Thanks for helping.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嗼ふ静 2024-12-17 14:29:38

那么我真的不能将模板化值作为地图的键吗?

不,没有这样的规则。如果有任何这样的规则,那就意味着通用编程的力量,模板存在的目的将毫无用处。

或者还有其他方法吗?

您只是遇到语法错误,因为您没有使用其(std)命名空间来限定映射。

对我来说效果很好这里

#include<map>

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

};

int main()
{
    return 0;
}

So is it true that I cannot have a templated value as a map's keys?

No, There is no such rule. If there was any such rule it would mean power of Generic Programming, the very purpose of existence of Templates would be useless.

or is there another way to do it?

You are just having an syntax error, because you did not qualify map with its (std)namespace.

Works fine for me here

#include<map>

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

};

int main()
{
    return 0;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文