這裏談到的是我有問題的功能:C++:索引超出範圍
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
N
是相同length
和是我調試在Visual Studio 2012這個代碼的list
的長度和我發現存在一個問題:
for (int k = i; list[k - 1] > list[k]; k--){
該問題涉及超出範圍的錯誤。
如果需要,我可以提供調用堆棧。
任何人都可以幫我改變這個while
和for
循環只是爲了保存sort_index()
功能的功能嗎?
最好的問候,
JR
您沒有看到k的負值。 –
將'k &&'放在該條件測試前面。 – WhozCraig