Если предположить, что у вас есть свой узел как глобальный вы можете сделать что-то вроде этого
#include <vector>
#include <iostream>
#include <utility>
std::pair<float,float> MyNode(10,20);
struct CalculateDistance{
float operator()(std::pair<float,float> temp) {
//Use MyNode to calculate the distance between MyNode and temp and return it
}
};
int main(){
std::vector<std::pair<float,float> > listOfCoordinates;
listOfCoordinates.push_back(std::make_pair(10.20,30.2));
listOfCoordinates.push_back(std::make_pair(9.20,31.2));
listOfCoordinates.push_back(std::make_pair(12.20,39.2));
listOfCoordinates.push_back(std::make_pair(15.20,-30.2));
std::vector<float> distances;
std::copy(listOfCoordinates.begin(),listOfCoordinates.end(),distances.begin(),CalculateDistance());
std::sort(distances.begin(),distances.end());
}
Но это только путь, вы должны размещать код или быть более точным, так кто-то может помочь вам. Я не делал фактических вычислений, CalculateDistance()
должен возвращать поплавок, представляющий расстояние. Я не компилировал свой код, просто чтобы показать вам основную идею.
Если вы хотите сохранить отношения между узлами и расстояния, вы можете сделать что-то вроде:
typedef std::pair<float,float> Coordinate;
typedef float Distance;
typedef std::pair<Coordinate,Distance> Node;
и использовать вектор узла
Это не является полезным вопрос. Конечно, вы можете сортировать вектор, используя std :: sort, пока вы каким-то образом заполняете вектор, вы можете использовать std :: copy и объект функции (который вычисляет расстояние), а затем сортировать его. –
Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как использовать std :: sort для сравнения всего вектора только с заданным элементом. Я даже не знаю, возможно ли это, или мне нужно найти другое решение. Мне просто нужно некоторое руководство – Frion3L