C++ C++;:索引超出范围
下面是我遇到问题的函数:C++ C++;:索引超出范围,c++,loops,for-loop,range,abort,C++,Loops,For Loop,Range,Abort,下面是我遇到问题的函数: ivec sort_index( vec list, int length ) { //UNSORTED VECTOR OF INPUT VALUEAS ivec index; index = zeros_i(N); float temp = 0; int temp2 = 0; for ( int j = 0 ; j<N ; j++){ index[j]=j; // VALUES IN INCREASING ORDER } int
ivec sort_index( vec list, int length ) { //UNSORTED VECTOR OF INPUT VALUEAS
ivec index;
index = zeros_i(N);
float temp = 0;
int temp2 = 0;
for ( int j = 0 ; j<N ; j++){
index[j]=j; // VALUES IN INCREASING ORDER
}
int i = 1;
while ( i < length ){
for (int k = i; list[k - 1] > list[k]; k--){
temp = list[k - 1]; //BUBBLE SORT
list[k - 1] = list[k];
list[k] = temp;
temp2 = index[k - 1]; //IN THE SAME MOMENT - DATA IS BEING SHUFFLED
index[k - 1] = index[k];
index[k] = temp2;
}
i++;
}
return index; //FUNCTION RETURNS VECTOR WITH SHUFFLED VALUES
问题与超出范围的错误有关
如果需要,我可以提供调用堆栈
有谁能帮我更改这个而和for
循环,只是为了保存sort\u index()
函数的功能性
致以最良好的祝愿
JR关于
for (int k = i; list[k - 1] > list[k]; k--){
k等于0,并且list[k-1]
将调用异常当然它应该是:
对于(int k=i;(k>0)和&(list[k-1]>list[k]);k--){
否则,似乎没有任何东西可以阻止k从数组的开头掉下来。您没有捕捉到k的负值。将k&&
放在条件测试前面。
for (int k = i; list[k - 1] > list[k]; k--){