2016-08-26 3 views
-1

У меня есть вектор поплавками, которые включают следующее:находка() возвращает вектор индекс выходит за пределы диапазона

48.2701 
18.868 
42.9535 
7 
39.2046 
5.09902 
29 

У меня есть кусок кода, который находит наименьшее число в векторе и возвращает индекс:

int indexofsmallest = 2; 
smallest = *min_element(distances.begin(), distances.end()); 
int pos = find(distances.begin(), distances.end(), smallest) - distances.begin(); 
indexofsmallest = pos; 

cout << "||" << smallest << "||" << endl; 
cout << "index of smallest is:" << indexofsmallest + 1 << endl; 

однако, когда я бегу, он бросает вектор индекс выходит за пределы диапазона точек останова

, что я делаю неправильно здесь?

EDIT: enter image description here

enter image description here

+0

@Smeeheey это std :: min_element – user

+1

Похоже, вам, возможно, потребуется научиться использовать отладчик для выполнения кода. С хорошим отладчиком вы можете выполнить свою программу по очереди и посмотреть, где она отклоняется от ожидаемого. Это важный инструмент, если вы собираетесь заниматься программированием. Дальнейшее чтение: ** [Как отлаживать небольшие программы] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** –

+0

@Smeeheey min_element является частью belkipAndroidness

ответ

1

Почему вы не просто найти индекс наименьшего элемента с помощью:

int smallestInd = min_element(distances.begin(), distances.end()) - distances.begin(); 

EDIT

Это код, который я есть в моем редакторе

#include<iostream> 
#include<algorithm> 
#include<vector> 
using namespace std; 
int main() { 

    vector<double> distances = { 48.2701, 18.868, 42.9535, 7, 39.2046, 5.09902, 29 }; 
    cout << min_element(distances.begin(), distances.end()) - distances.begin() << endl; 
    return 0; 
} 
+0

возвращает 34 в качестве индекса – belkipAndroidness

+0

И каков размер ваших векторных« расстояний »? –

+0

имеет размер 7 двухместных номеров – belkipAndroidness

Смежные вопросы