c++ vector 越界-vector使用显示越界是什么原因

问题描述

vector使用显示越界是什么原因

#include
#include

using namespace std;

void merge( vector& a, int first, int mid, int last )
{
vector s1;
for (auto si = a.begin() + first; si <= a.begin() + mid; ++si)
s1.push_back( *si );
vector s2;
for (auto si = a.begin() + mid + 1; si <= a.begin() + last; ++si)
s2.push_back( *si );
int i = 0; int j = 0; int k = 0;
int len1 = mid - first + 1;
int len2 = last - mid;
for (; ( i < len1 ) && ( j < len2 ); ++k)
{
if (s1[ i ] < s2[ j ])
a[ k ] = s1[ i++ ];
else
a[ k ] = s2[ j++ ];

}
while (i++ < len1)//调试到这里显示越界,但是此时i = 0,len1 = 1,怎么也想不通为什么会越界
    a[ k++ ] = s1[ i ];
while (j++ < len2)
    a[ k++ ] = s2[ j ];

}

void mergesort( vector& a, int first, int last )
{
if (first < last)
{
int mid = ( first + last ) / 2;
mergesort( a, first, mid );
mergesort( a, mid + 1, last );
merge( a, first, mid, last );
}
}

int main()
{
vector a = { 44, 3, 38, 5, 47, 25, 36, 26, 27, 2, 46, 4, 5, 50,99 };

mergesort( a, 0, a.size()-1 );

for (auto i : a)
    cout << i<<"  ";
cout << endl;

return 0;

}

解决方案

i++
->
++i
否则下面i=1了

时间: 2024-10-02 04:53:12

c++ vector 越界-vector使用显示越界是什么原因的相关文章

java-JAVA Choice中文显示小方格的原因是什么?

问题描述 JAVA Choice中文显示小方格的原因是什么? Java Choice显示中文为一个个小方格,字符和字母显示正常,获取到中文后Print中文没有乱码 解决方案 编码问题,编码和解码方式不一样,可能是你尝试用GBK来解码UTF-8的东西 解决方案二: 没有用,我用GBK和UTF-8都试过了,还是这样 解决方案三: 你看看得到的时候输出是什么

页面-功能无法正常显示,在别的电脑可以正常显示,是什么原因造成的?

问题描述 功能无法正常显示,在别的电脑可以正常显示,是什么原因造成的? 严重: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: /search/app/searchtools/cognation_query.jsp(34,7) According to TLD or attribute directive in tag file, attribute list does no

OpenGL ES 贴图图片是否有 Alpha 通道以及图片大小导致无法显示帖图的原因分析

OpenGL ES 贴图图片是否有 Alpha 通道以及图片大小导致无法显示帖图的原因分析 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 如下挖的坑,现在填一下! 1.Alpha通道的问题,在

我用MapInfo里的通用转换器的时候总显示转换失败什么原因???

问题描述 我用MapInfo里的通用转换器的时候总显示转换失败什么原因???每次转换的时候都弹出"translationfailed.seelogfilefordetails."请高手指教·· 解决方案 解决方案二:我的也是出现同样的问题,不知楼主解决没有呀,解决了告诉一下小弟哦解决方案三:解决了··就在Oracle里面建一个图空间就可以了··解决方案四:朋友,我是用的SQLserver,怎么解决一下呀?解决方案五:转换文件和生成文件全部放在没有中文路径的目录下应该就可以了.

网站标题、描述快照显示不正常的原因及解决方法

最近很多朋友的网站都出现了同样的问题,就是网站在百度搜索结果中标题和描述显示不正常.不完整,网站快照无描述,网站的快照无法预览,但是网站快照天天更新,关于这一问题,原因何在呢?是什么原因所造成呢?在此笔者与大家谈谈造成此问题的原因及解决方法 一.robots.txt文件惹的祸 一般来说,出现这种情况就是当Robots.txt中设置某一个特定URL为"nofollow.noindex",虽然这个指令告诉搜索引擎不要跟踪,以及收录这条链接.但是如果有一定数量的外链指向这条链接,搜索引擎也许

不能显示隐藏文件的可能原因及解决方法

选择"显示隐藏文件"这一选项后,发现U盘有个文件闪出来一下就马上又消失了,而再打开文件夹选项时,发现仍就是"不显示隐藏文件"这一选项.而且刚发现点击C.D等盘符图标时会另外打开一个窗口! 总结 I.病情描述 1.无法显示隐藏文件; 2.点击C.D等盘符图标时会另外打开一个窗口; 3.用Winrar查看时发现C.D等根目录下有autorun.inf和tel.xls.exe两个恶心的文件; 4.任务管理器中的应用进程一栏里有个莫明其妙的kill; 5.开机启动项中有莫明

U盘插在电脑无法显示盘符的原因和解决办法

  最方便的携带数据的产品就是U盘,它可以在任何电脑上进行转化数据,但也会有人遇见U盘插在电脑无法显示盘符的尴尬时刻.这样的事情发生,谁都不想的,我们不妨吃完面,再看看小编怎么说. 具体方法: 首先,我们判断可能造成的原因,有可能是虚拟光驱.网络驱动器等软件. 1.虚拟光驱 我们按照路径 C:WINDOWSsystem32drivers文件夹,查找"sptd.sys"的文件,并且删除它,再重启电脑. 小编提醒: 本文中提到的"sptd.sys"一定不是微软Windo

SELECT CAST(GETDATE() AS VARCHAR(10)) 显示不同格式的原因

   开发人员测试时,发现生产服务器与测试服务器执行SELECT CAST(GETDATE() AS VARCHAR(10))语句显示的格式不一样.如下所示 Server A Server B 其实出现这个问题,是因为登录名(login)的语言不一致所致,如下所示 可以使用下面SQL语句来检查对应的默认语言 SELECT @@LANGUAGE   或   SELECT loginname,name, language FROM sys.syslogins 上面出现不一致是因为同一登录名的默认语言

手机端提交照片,后台能看到照片但只显示一半是什么原因?

问题描述 byte[]bytes=Convert.FromBase64String(strPhoto);然后把bytes显示为图片时,图片有一半显示灰色Response.ContentType="image/gif";Response.BinaryWrite(bytes); 解决方案 解决方案二:后台最终收到的图片有损坏解决方案三:手机端在提交的时候会不会因为网络原因丢包或者什么..解决方案四:应该是丢包,但不知道怎么解决.打开手机端数据库看了下照片是好的,然后手机端的照片转为字符串和