我有兩個QVector<double>
s x
和y
。實際上,矢量表示數據點A(x [0],y [0]),B(x [1],y [1])等等。現在我想排序x
並修改y
,以便數據點仍然像A(x [n],y [n])。例如,如果我有x
{3,6,1,5}和y
{9,2,1,5}我應該收到:x {1,3,5,6}和y
{1,9,5,2 }。有沒有任何算法?排序二QVector
1
A
回答
0
0
您可以通過多種方式實現這一目標,一個是使用中介地圖容器和利用的事實,<key,value>
雙由鍵排序:
QVector<int> x = {2,1,0};
QVector<int> y = {3,2,1};
QMap<int, int> map;
for(int i = 0; i < x.size(); ++i) // Assume vectors have the same size
map.insert(x[i], y[i]);
QList<int> xl = map.keys();
QList<int> yl = map.values();
x = QVector<int>::fromList(xl); // {0,1,2}
y = QVector<int>::fromList(yl); // {1,2,3}
0
據我所知,目前還沒有的Qt功能,它會做你想做的。排序算法並不複雜,因此您必須編寫自己的代碼來實現它,並且只需沿y向量標記,以便在y向量上重複對x向量的任何操作。我確定有人已經編碼過,但可能不會在任何可以找到它的地方發佈。也就是說,你當然可以找到示例代碼來完成排序,然後添加你的y矢量部分。
相關問題
- 1. 如何編輯Qvector內Qvector的內容
- 2. QVector不追加!
- 3. 多態指針的序列化QVector
- 4. 排序第二個字
- 5. 二維數組單排序
- 6. Magento - 二級排序方式
- 7. Spark中的二次排序
- 8. 對二維數組排序
- 9. QVector不匹配'operator ='
- 10. QML/Javascript中的QVector
- 11. 如何在MATLAB中對第二排排序二維數組?
- 12. QMap <QString,QVector <QString>>訪問QVector C++ Qt
- 13. 初始化和訪問<QVector <QVector <int>> QT5
- 14. QVector <QVector int>>修改 「內部」 矢量
- 15. 排序二進制序列有R
- 16. 使第二個div不能使用角度可排序排序
- 17. 如何使用jQuery UI進行排序來排序第二行?
- 18. dgrid自定義排序與第二排序列
- 19. 排序二維數組排序的問題
- 20. 二進制插入排序類似於定期插入排序
- 21. 插入排序和二進制搜索插入排序
- 22. 二元合併排序&天然合併排序
- 23. 初始化QImages的QVector
- 24. 從數組初始化QVector
- 25. QVector子類化<T>
- 26. 將2D矢量2D QVector C++
- 27. 基數排序使用二進制
- 28. 二進制搜索升序排列C++
- 29. 在Perl排序的第二個字
- 30. 排序一個二維數組
我不知道Qt中的任何算法都可以做到這一點。是否有可能創建一個將x和y保存在一起的結構?然後,您可以實現它的比較運算符來比較xs,這樣可以將這些結構的向量傳遞給任何排序算法。否則,我擔心你必須自己實施這種排序。 – 2014-10-09 20:01:32
我應該注意到,表現非常重要。我的QVector的長度是數千,所以創建新的'QVector','QMap'或其他容器是不合適的。我會將數據點存儲在'QMap'中,但是我需要將x值(和y值)存儲在相鄰的存儲器中。 – lnk 2014-10-09 20:24:54