使用boost :: shared_ptr编译std :: map时出错

时间:2011-12-07 12:11:16

标签: boost shared-ptr stdmap

我正在尝试在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'。

感谢任何帮助。 谢谢。

1 个答案:

答案 0 :(得分:1)

您使用错误的运算符来检查mymap.end()。将循环更改为

for (it = mymap.begin(); it != mymap.end(); it++ )