我試圖做一個合併排序在一個稱爲x的矢量,其中包含x座標cpp中的合併排序。當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);
或者,如果你想用點由Y cordinate等於x值進行排序:
而且,我想我要補充,如果你真的永遠需要到,您可以一直返回std::pair
。更好的選擇通常是通過函數參數返回。
operator <(const Point &rhs) {return (x < rhs.x || x == rhs.x && y < rhs.y);}
諷刺 - 矢量矢量... – 2010-10-07 08:10:09
@Preet Sangha::)是的。 – JoshD 2010-10-07 08:15:06
謝謝。問題是我獲得座標的方式,我的應用程序的最佳方式是將它們分開。 可能有一個結構與兩個向量,按y座標排序,然後讓合併函數創建一個新的結構,具有新的向量,按x?或者讓函數改變現有的結構。 – user468825 2010-10-07 08:28:35
不,你不能從這個例子中的方法返回2個結果。
vector<int>, vector<int> merge_sort();
你可以做的是通過2個矢量,通過參考函數,將所得mergesorted向量影響2個載體...如
void merge_sort(vector<int>& x, vector<int>& y);
最終,你可以做@JoshD提到什麼,創建一個名爲struct
的調用點,併合並排序點結構的向量。
返回矢量很可能不是您想要的,因爲它們是爲此目的而複製的(這很慢)。例如,看看this implementation。
- 1. 是否有可能從一個函數返回兩個列表在Python
- 2. C++ 11:是否有可能從函數返回一個std :: initializer_list?
- 3. 轉到:是否有可能返回指向函數
- 4. 是否有可能從Python函數分配兩個不同的返回值到兩個單獨的變量?
- 5. 是否有可能從C中的另一個函數返回一個函數?
- 6. 是否有可能從函數返回中斷/停止循環?
- 7. 從函數返回兩個變量
- 8. 是否有可能從set_trace_func返回值?
- 9. 是否有可能在Codeigniter中返回多個變量/數組?
- 10. R中的函數可以返回兩個向量嗎?
- 11. 是否有可能從兩個高階函數指定返回值Python中相同的變量[查看詳細]
- 12. 是否有可能從一個函數返回一個jquery小部件?
- 13. 是否有可能JNI函數返回整數或布爾值?
- 14. 函數是否可以返回兩個值?
- 15. 函數是否可以返回兩個值?
- 16. 從表中選擇時是否有可能返回標量值?
- 17. 列表和變量是否可以從函數返回?
- 18. 是否有可能在反應渲染函數中返回空?
- 19. 是否有可能改變函數的返回類型
- 20. 是否有可能讓PostgreSQL函數返回「任意」類型?
- 21. 是否有可能在jQuery中返回事件函數?
- 22. 是否有可能在JavaScript函數中返回多次
- 23. 是否有可能django視圖返回javascript函數
- 24. 是否可以從Sybase函數返回一個數字列表?
- 25. 是否有交換C++向量中的兩個段的函數?
- 26. 是否有可能使一個函數不能返回,直到滿足條件?
- 27. 是否有可能爲兩個函數使用一個InputBox?
- 28. 是否有可能通過jQuery.post()有兩個成功的回調函數?
- 29. C++ - 函數返回向量
- 30. 向量函數返回
等等,你有單獨的向量爲x和y?爲什麼不是一個單一的座標矢量? – JoshD 2010-10-07 08:04:17