1.报错部分
for(multimap<vector<char>, double>::iterator ch = time_stamp.begin();ch!=time_stamp.end();){
........
........
multimap<vector<char>, double>::iterator ch1 = ch++;
if ((ch1)->first == ch->first) {
flag = FALSE;
}
else {
flag = TRUE;
}
}
.......
.......
}
2.分析
map.end()指向的元素是容器中最后一个元素之后的元素,是一个理论上的元素 ,实际并不存在。
因此指向它的迭代器不能够被解引用,就是所谓的空指针、野指针(Dereferenced)。
map.end()只是跟map.begin()相互对应,确定map的范围,并没有实际的意义
3.解决
加一个判断条件即可
for(multimap<vector<char>, double>::iterator ch = time_stamp.begin();ch!=time_stamp.end();){
........
........
multimap<vector<char>, double>::iterator ch1 = ch++;
if(ch != time_stamp.end()){
if ((ch1)->first == ch->first) {
flag = FALSE;
}
else {
flag = TRUE;
}
}
}
.......
.......
}