Im пытается сделать сортировку слияния в cpp на векторе с именем x, который содержит x координат. Поскольку mergesort сортирует координаты x, он должен перемещать соответствующие элементы в векторе y, содержащем y-координаты. единственная проблема в том, что я не знаю, как (или, если я могу) вернуть оба результирующих вектора из функции слияния. , если его проще реализовать, я мог бы использовать более медленный метод сортировки.Можно ли вернуть два вектора из функции?
ответ
попробовать что-то вроде этого:
struct Point {
int x;
int y;
operator <(const Point &rhs) {return x < rhs.x;}
};
vector<Point> my_points.
mergesort(my_points);
Или, если вы хотите отсортировать точек с одинаковым значением х по у cordinate:
Кроме того, я думал, что я хотел бы добавить, что если вы действительно когда-нибудь понадобится вы всегда можете вернуть std::pair
. Лучшим выбором обычно является возврат через параметры функции.
operator <(const Point &rhs) {return (x < rhs.x || x == rhs.x && y < rhs.y);}
Ирония - вектор векторов ... –
@Preet Sangha: :) Да, действительно. – JoshD
Спасибо. Проблема в том, как я получаю координаты, и лучший способ для моего приложения - отделить их. возможно иметь структуру с двумя векторами, отсортированную по координатам y, а затем функцию слияния создать новую структуру, которая имеет новые векторы, отсортированные по x? или изменить функцию существующей структуры. – user468825
Нет, вы не можете вернуть 2 результата из метода, подобного в этом примере.
vector<int>, vector<int> merge_sort();
Что вы можете сделать, это передать 2 вектора по ссылке на функции и результирующий вектор mergesorted влияет на 2 вектора ... например
void merge_sort(vector<int>& x, vector<int>& y);
В конечном счете, вы можете делать то, что @JoshD упоминается и создайте struct
называемую точку и сгруппируйте сортировку вектора точечной структуры.
Возвращаемые векторы скорее всего не то, что вы хотите, поскольку они скопированы для этой цели (что медленно). Посмотрите, например, на this implementation.
- 1. Можно ли вернуть KeyValuePair из функции .NET?
- 2. Можно ли безопасно * вернуть TCHAR * из функции?
- 3. Можно ли вернуть формулу из функции?
- 4. Можно ли вернуть L-значения из функции
- 5. Может ли функция из R вернуть два вектора?
- 6. Можно ли в этом случае вернуть два значения к функции?
- 7. Как вернуть два значения из функции?
- 8. Как вернуть два параметра из функции javascript?
- 9. Вернуть два значения из скалярной функции SQL
- 10. Могу ли я вернуть два значения из функции рекурсивного поиска?
- 11. Как вернуть два значения из функции?
- 12. Использования Jquery вернуть два массива из функции
- 13. вернуть базовую матрицу из вектора
- 14. Можно ли вернуть перечисление из метода?
- 15. Можно ли вернуть функцию из другой функции в C?
- 16. Можно ли вернуть временную таблицу из функции вместо переменной таблицы?
- 17. Можно ли вернуть список и переменные из функции?
- 18. Найти два перпендикулярных вектора из другого вектора
- 19. Можно ли использовать два символьных вектора в инструкции sqldf join?
- 20. Возможно ли вернуть виджет jquery из функции?
- 21. Возможно ли вернуть два списка из списка?
- 22. Сумма в два вектора
- 23. Можно ли вернуть VLA?
- 24. Можно ли вернуть объект класса из Flask?
- 25. Можно ли вернуть метод из заглушки?
- 26. Можно ли вернуть копию собственности из геттера?
- 27. Можно ли прямо вернуть java.sql.ResultSet из Groovy?
- 28. Можно ли вернуть Ничего из __new__?
- 29. Можно ли вернуть ExpandoObject из веб-сервиса?
- 30. вернуть два значения из webservice
Подождите, у вас есть отдельные векторы для x и y? Почему не один вектор координат? – JoshD