迭代器的一个问题

nullah 2008-10-14 09:43:42

void insertSort(vector<int>::iterator &point, int n)
{
int temp;
vector<int>::iterator tmp;
int state = 1;

for(int i=1; i<=n; i++)
{
point++;
temp = *point;
tmp = point;
int j = i;

while(j>0 && *(tmp-1)>temp)
{
*tmp = *(tmp-1);
j--;
}
*tmp = temp;
}
}


一运行到point++这个位置就出错 到底是什么原因一直没找到
...全文
107 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yshuise 2008-10-14
  • 打赏
  • 举报
回复
想写泛型算法可以参考stl来写,不要独创。
taodm 2008-10-14
  • 打赏
  • 举报
回复
VC2005在debug模式下内置了很强大的越界检查功能。
所以,100%肯定你是point越界。
怎么越的,你就自己慢慢找吧。这个找的过程能令你提高很多。
nullah 2008-10-14
  • 打赏
  • 举报
回复
不懂呢
什么原因呢?
[Quote=引用 7 楼 taodm 的回复:]
既然你用的VC2005,那么肯定是point越界了!
[/Quote]
taodm 2008-10-14
  • 打赏
  • 举报
回复
既然你用的VC2005,那么肯定是point越界了!
nullah 2008-10-14
  • 打赏
  • 举报
回复
是vc2005
执行语句

iter= mySort.begin();
insertSort(iter, mySort.size());

这样应该不可能越界吧
ysuliu 2008-10-14
  • 打赏
  • 举报
回复
估计是越界了,都没判断end()
[Quote=引用 1 楼 taodm 的回复:]
VC2005?point越界了呗。
[/Quote]
freshairfly 2008-10-14
  • 打赏
  • 举报
回复
可能越界了
另外最好用 ++point ,效率高些
wuyu637 2008-10-14
  • 打赏
  • 举报
回复
加个判断吧


if( pointer ! = your_vector.end())
{
pointer++;
}

否则有可能越界。
daidodo 2008-10-14
  • 打赏
  • 举报
回复
point++;之前没有检查其有效性,如果到达了end(),甚至越界了,你都无法知道。
taodm 2008-10-14
  • 打赏
  • 举报
回复
VC2005?point越界了呗。

64,641

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧