C2784在地图上使用一组迭代器

时间:2011-09-05 15:37:58

标签: templates iterator arguments

下面的代码产生编译器错误C2784:

'bool std :: operator<(const std :: _ Tree< _Traits>&,const std :: _ Tree< _Traits>&)':无法推断'const std :: _ Tree< _Traits&gt的模板参数; &安培;”来自'const std :: _ Tree_iterator< _Mytree>'

代码有什么问题?提前谢谢了;我在该错误消息上找不到任何可以帮助我的帖子。

#include <map>
#include <set>

void main(){
int i=1;
     std::map<int, int> A;
A[i]=i;
std::set<std::map<int, int>::iterator > setOfIts;
setOfIts.insert(A.begin());
}

1 个答案:

答案 0 :(得分:0)

你所看到的是Visual Studio长期抱怨它没有办法比较你想放在集合中的迭代器,因为没有合适的operator <。由于无法比较它们,因此无法确定两个迭代器是否具有相同的值,因此只有其中一个应该在集合中。

要解决此问题,您可以提供自己的操作员see example here。迭代器平等的含义取决于你... ...