如何使用模板化值作为地图中的键?
我正在尝试使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,没有这样的规则。如果有任何这样的规则,那就意味着通用编程的力量,模板存在的目的将毫无用处。
您只是遇到语法错误,因为您没有使用其(std)命名空间来限定映射。
对我来说效果很好这里
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.
You are just having an syntax error, because you did not qualify map with its (std)namespace.
Works fine for me here