iterator not dereferencable .

seacake2022-10-04 11:39:541条回答

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

已提交,审核后显示!提交回复

共1条回复
小鸡斗地球 共回答了18个问题 | 采纳率72.2%
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
1年前

相关推荐

copy(dist.begin(),dist.end(),ostream_iterator(cout," ")); co
copy(dist.begin(),dist.end(),ostream_iterator(cout," ")); cout
hjkl8881年前1
kisbig826 共回答了24个问题 | 采纳率79.2%
往cout里从begin输出到end,每个元素后加个“ ”
Iterator it =map1.keySet().iterator(); while(it.hasNext()){
Iterator it =map1.keySet().iterator(); while(it.hasNext()){ if((Integer)it.next()==1) if的条件报错
HashMap map1= new HashMap();

map1.put(1, "212");
Iterator it =map1.keySet().iterator();
while(it.hasNext()){
if((Integer)it.next()==1){
map1.get(it.next());
System.out.println("11111111");
bluesmansion1年前1
judezhuo 共回答了13个问题 | 采纳率100%
你迭代器要是用泛型.
Iterator it=map1.keySet().iterator();
还有就是在使用迭代器的时候,你判断一次,游标走了2次,使用了2次next();
while(it.hasNext()){
int key=it.next();
if(key==1)
.//后边自己写了
}
Iterator iter=map.entrySet().iterator();
兮兮不可怜1年前1
幽若尘纯 共回答了15个问题 | 采纳率80%
//获得map的迭代器,用作遍历map中的每一个键值对
Iterator是迭代器,map之前应该定义过,姑且认为是HashMap.表示map中的键值对都是String类型的.
map.entrySet()是把HashMap类型的数据转换成集合类型
map.entrySet().iterator()是去获得这个集合的迭代器,保存在iter里面.迭代器这么用:
while(iter.hasNext()) {
Entry obj = it.next();//就能获得map中的每一个键值对了
}
struts2 if怎么根据iterator的下标进行判断
struts2 if怎么根据iterator的下标进行判断
如:

下标小鱼等于2



下标》2



其中test里面条件怎么写
jyhhh1年前1
萍儿4 共回答了13个问题 | 采纳率92.3%
#status.count 在struts2迭代标签里代表当前行数


下标小鱼等于2


下标》2
假设iter为vector::iterator类型的变量,iter++ ->empty()是先调用函数再加加 还是后调用
假设iter为vector::iterator类型的变量,iter++ ->empty()是先调用函数再加加 还是后调用函数再加
写出理由
咖啡NO加糖1年前1
uggw1 共回答了15个问题 | 采纳率86.7%
考虑运算符的优先级别和观看问题都要写成 (iter++)->empty()
++作为后缀就是先调用后增值,就是机制决定,我也不知道为什么,
要知道是怎么运作,逆向一下就清楚了.
关于C++中list; iterator iter++ = list3.begin();的含义.
元吉亨利71年前1
sy800620 共回答了19个问题 | 采纳率84.2%
由于++的优先级高于赋值=
所以上面这个写法是错误的
因为iter没有意义的时候,执行++运算会出错.