MMM MMM - 4 months ago 29
C++ Question

Compare item in a vector to all items in a vector

So I currently have a vector of my custom struct.

Each element in my vector is a graph point (x,y). Given an index in my vector, I need to be able the euclidean distance between the index given and all the other points. I already know how to calculate euclidean distance, what I want to know is how I can check any element in my vector against all the others without rotating.

For example in my vector if I have:

(3,5) , (4,6) , (7,8) , (5,3)

as an example and I was given index 2 (7,8) I need to be able to calculate the distance between (7,8) and the other 3 points because I'm interested in finding the shortest path. I thought of using the std::rotate function and move (7,8) to the front but I don't want to mess with my vector. Is there a way I can accomplish being given an index in my vector to an element and comparing it to all other elements in the vector without changing the vector so I can do my computations? Thank you

for(const auto& i : yourvector)
  compare(i, yourvector[foo]);

That ought to do it if looping through the vector is OK.

Else you can sort the vector to put the closest elements first: