Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:索引超出范围_C++_Loops_For Loop_Range_Abort - Fatal编程技术网

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--){