我正在尝试在vs2005中编译我的代码。 我正在使用std :: map和boost :: shared_ptr(v1.47.0) 我的代码看起来像这样
struct B {
int a;
}
typedef boost::shared_ptr<B> K;
std::map<const std::string, K > mymap;
//some code
std::map<const std::string, K >::iterator it;
for (it = mymap.begin(); it < mymap.end(); it++ )
{
//do something
}
编译器在for语句中给出错误。 以下是错误
错误C2784:'bool boost :: operator&lt;(const boost :: intrusive_ptr&amp;,const boost :: intrusive_ptr&amp;)':无法推断'const boost :: intrusive_ptr&amp;'的模板参数来自'std :: _ Tree&lt; _Traits&gt; :: iterator'。
感谢任何帮助。 谢谢。
答案 0 :(得分:1)
您使用错误的运算符来检查mymap.end()
。将循环更改为
for (it = mymap.begin(); it != mymap.end(); it++ )