【发布时间】:2012-02-03 20:42:09
【问题描述】:
在我的头文件中,我包含了 std::map 并使用了适当的命名空间。
我的成员之一是:
map<unsigned int, double> pT_Spam;
在我的 .cpp 文件中,我尝试做一些我现在经常做的事情:
for(map<unsigned int, double>::iterator it=pT_Spam.begin() ; it!=pT_Spam.end() ; it++) {/*code*/}
在 cplusplus.com 上使用 std::map 的示例之一中甚至提到了上述内容。尽管我在代码的其他部分做了几乎相同的操作,不会导致编译错误,但在这一特定行上,我从 Cygwin 收到以下错误:
error: conversion from `std::_Rb_tree_const_iterator<std::pair<const unsigned int, double> >' to non-scalar type `std::_Rb_tree_iterator<std::pair<const unsigned int, double> >' requested
这似乎很奇怪。知道可能出了什么问题吗? (当然,我的标头包含在我的 .cpp 中)
【问题讨论】:
-
抱怨 begin() 返回的迭代器是一个 const_iterator,但您将它分配给了一个迭代器。但我不知道为什么,这对我来说也很合适。这是什么编译器?
-
begin() 似乎也能够返回非常量迭代器。我在 windows 上使用 Cygwin 的 g++。
标签: c++ map iterator compiler-errors