【发布时间】:2010-06-10 19:50:10
【问题描述】:
很早就宣布了地图:
map<char*,char*> rtable; // used to store routing information
现在我正在尝试显示地图的内容:
void Routes::viewroutes(){
typedef map<char*, char*>::const_iterator iter;
for (iter=rtable.begin(); iter != rtable.end(); ++iter) {
cout << iter->second << " " << iter->first << endl;
}
}
在 '!=' 标记和 '->' 标记之前收到错误“预期的主表达式。似乎无法理解我在这里犯的错误。有什么想法吗?
【问题讨论】:
-
请注意,
char*作为映射键并不符合大多数初学者的预期。默认比较(对std::map<char*,char*>进行排序)将根据它们的地址,而不是根据它们的值对键进行排序。"blah"和"blah"是否比较相等,取决于编译器是否折叠相同的字符串文字 - 许多编译器的优化设置。通常你想使用std::string而不是char*。 -
那和内存问题。 char* 是可憎的。
-
sbi -- 我很欣赏你的评论。我刚刚开始尝试找出为什么我的地图没有按预期排序。
-
(在 cmets 中回复时请正确@address,否则它不会出现在我们的回复中,我们也永远不会看到您的回复。)只需使用
std::string处理所有与字符串相关的内容并执行远离 C 的字符数组。它更容易,更不容易出错,它很少会导致显着的性能损失,即使这样做,您仍然可以准时回退到字符数组。
标签: c++ dictionary std stdmap c++-standard-library