程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++ vector 越界-vector使用顯示越界是什麼原因

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了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved