2016-08-26 32 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; 

但是当我运行时,它抛出一个向量下标越界断点

我究竟做错了什么?

编辑: 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(); 

编辑

这是我的代码在我的编辑

#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