iterator not dereferencable .
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/17 12:17:53
iterator not dereferencable .
#include "intset.h"
#include
#include
using namespace std;
typedef std::set set_int;
void IntSet::insert(int n){
set_int::insert(n);
}
bool IntSet::IsEqual(IntSet s1){
set::iterator ita,itb;
ita= set_int::begin();
itb=s1.begin();
if( set_int::size()!=s1.size())
return false;
for(;ita!=set_int::end()&&itb!=s1.end();ita++,itb++){
if((*ita)!=(*itb))
return false;
}
return true;
}
//求s1 与s2 的并
IntSet IntSet::incorporate2(IntSet s1,IntSet s2){
IntSet ss;
set::iterator it;
for(it=s1.begin();it!=s1.end();it++)
ss.insert(*it);
for(it=s2.begin();it!=s2.end();it++)
ss.insert(*it);
return ss;
}
//求s1 与s2 的交
IntSet IntSet::union2(IntSet s1,IntSet s2){
IntSet ss;
set::iterator ita,itb;
ita=s1.begin();
itb=s2.begin();
while(ita =s1.end()&&itb =s2.end()){
while(*ita>*itb&&ita =s1.end()&&itb =s2.end())
itb++;
if(*ita==*itb&&ita =s1.end()&&itb =s2.end()){
ss.insert(*ita);
ita++; //此处出错!
itb++; //此处出错!到达end时没有跳出循环
}
while(*ita
#include "intset.h"
#include
#include
using namespace std;
typedef std::set set_int;
void IntSet::insert(int n){
set_int::insert(n);
}
bool IntSet::IsEqual(IntSet s1){
set::iterator ita,itb;
ita= set_int::begin();
itb=s1.begin();
if( set_int::size()!=s1.size())
return false;
for(;ita!=set_int::end()&&itb!=s1.end();ita++,itb++){
if((*ita)!=(*itb))
return false;
}
return true;
}
//求s1 与s2 的并
IntSet IntSet::incorporate2(IntSet s1,IntSet s2){
IntSet ss;
set::iterator it;
for(it=s1.begin();it!=s1.end();it++)
ss.insert(*it);
for(it=s2.begin();it!=s2.end();it++)
ss.insert(*it);
return ss;
}
//求s1 与s2 的交
IntSet IntSet::union2(IntSet s1,IntSet s2){
IntSet ss;
set::iterator ita,itb;
ita=s1.begin();
itb=s2.begin();
while(ita =s1.end()&&itb =s2.end()){
while(*ita>*itb&&ita =s1.end()&&itb =s2.end())
itb++;
if(*ita==*itb&&ita =s1.end()&&itb =s2.end()){
ss.insert(*ita);
ita++; //此处出错!
itb++; //此处出错!到达end时没有跳出循环
}
while(*ita
while(*ita>*itb&&ita !=s1.end()&&itb !=s2.end())
itb++;
if(*ita==*itb&&ita !=s1.end()&&itb !=s2.end()){
ss.insert(*ita);
ita++; //此处出错!
itb++; //此处出错!到达end时没有跳出循环
}
while(*ita*itb&&ita !=s1.end()&&itb !=s2.end())
itb++;
else if(*ita==*itb&& ita !=s1.end()&& itb !=s2.end()){
ss.insert(*ita);
ita++; //此处出错!
itb++; //此处出错!到达end时没有跳出循环
}
else if (*ita
再问: 可是我在每一次的循环和if中都使用了ita !=s1.end()&&itb !=s2.end(),还是不懂为什么这样会出错,我在if后面重新检查一次ita !=s1.end()&&itb !=s2.end(),然后就好了,真心不懂.......求解释 if(*ita==*itb&&ita !=s1.end()&&itb !=s2.end()){ ss.insert(*ita); ita++; itb++; } if((ita==s1.end())||(itb==s2.end())) break;
再答: 实际上当你这个 if(*ita==*itb&&ita !=s1.end()&&itb !=s2.end()){ ss.insert(*ita); ita++; itb++; } 不满足条件时,可能是因为ita == s1.end(),或者itb == s2.end(); 假如说是ita == s1.end()造成的,那么你下面做的 while(*ita
itb++;
if(*ita==*itb&&ita !=s1.end()&&itb !=s2.end()){
ss.insert(*ita);
ita++; //此处出错!
itb++; //此处出错!到达end时没有跳出循环
}
while(*ita*itb&&ita !=s1.end()&&itb !=s2.end())
itb++;
else if(*ita==*itb&& ita !=s1.end()&& itb !=s2.end()){
ss.insert(*ita);
ita++; //此处出错!
itb++; //此处出错!到达end时没有跳出循环
}
else if (*ita
再问: 可是我在每一次的循环和if中都使用了ita !=s1.end()&&itb !=s2.end(),还是不懂为什么这样会出错,我在if后面重新检查一次ita !=s1.end()&&itb !=s2.end(),然后就好了,真心不懂.......求解释 if(*ita==*itb&&ita !=s1.end()&&itb !=s2.end()){ ss.insert(*ita); ita++; itb++; } if((ita==s1.end())||(itb==s2.end())) break;
再答: 实际上当你这个 if(*ita==*itb&&ita !=s1.end()&&itb !=s2.end()){ ss.insert(*ita); ita++; itb++; } 不满足条件时,可能是因为ita == s1.end(),或者itb == s2.end(); 假如说是ita == s1.end()造成的,那么你下面做的 while(*ita
Iterator iter=map.entrySet().iterator();
typedef vector:iterator
Iterator it =map1.keySet().iterator(); while(it.hasNext()){
vector的iterator为vector::iterator,那vector*的iterator是什么,
vector::iterator iter:其中的::类作用域,迭代器iterator是一个静态成员?
英语翻译The member function returns a reverse iterator that poin
请问const vector ::iterator和vector ::const_iterator有什么不同
iterator接口的hasnext方法、next方法和ResultSet结果集的next方法的区别
set里的元素是不复能重复的,用iterator()方法来区分重与否.
c++ vector::iterator first=v.begin(),last=v.end(); while(fir
关于C++中list; iterator iter++ = list3.begin();的含义.
假设iter为vector::iterator类型的变量,iter++ ->empty()是先调用函数再加加 还是后调用