我有一个std :: set,我想通过集合中的元素对进行迭代,所以我写了2个循环,如下所示:
for(std::set<T>::iterator i=mySet.begin();i!=mySet.end();++i)
{
for(std::set<T>::iterator j=i+1;j!=mySet.end();++j)
{
// do something
}
}
编译器告诉我,我无法向迭代器添加数字.但是我可以增加和减少它们.解决方法我发现我可以跳过第一次迭代:
for(std::set<T>::iterator i=mySet.begin();i!=mySet.end();++i)
{
std::set<T>::iterator j=i;
for(++j;j!=mySet.end();++j)
{
// do something
}
}
为什么我不能只添加一个数字为什么我必须增加?
解决方法:
你只能使用随机访问迭代器来实现这一点,因此原因与容器上没有indexoperator时的原因相同.另见Why isn’t there an operator[] for a std::list?