按照多于一个条件对矢量进行排序

时间:2017-03-17 17:06:16

标签: c++ qt sorting qvector

我在其他帖子中问过:my_old_post

但是现在我需要更复杂的条件来对我的矢量进行排序。

  

我有这样的矢量: vector_points_original。然后,如果我为每个点的z排序,我有其他矢量,如:vector_points_sorted_by_Z但是我需要 vector_sorted_by_z并且在按y分量排序前四个点和后四个点之后。你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

性能至关重要吗?如果没有,只需将现有的矢量分成两部分,按Y排序,然后将结果放回一个矢量?

std::vector<Point3d> sortedByZ;
std::vector<Point3d> firstFour(sortedByZ.begin(), sortedByZ.begin() + 4);
std::vector<Point3d> lastFour(sortedByZ.begin() + 5, sortedByZ.end());

// Sort firstFour and lastFour independently

sortedByZ = firstFour;
sortedbyZ.insert(sortedByZ.end(), lastFour.begin(), lastFour.end());

答案 1 :(得分:0)

string knihaRef = System.IO.File.ReadAllText("Osnova.txt").ToLower();
int[] numOfLet =new int[26];

foreach(char c in knizka)
{
    // Only count letters.
    if ('a' < c && c < 'z')
    {
        numOfLet[c-'a']++;
    }
}

如果您需要在std::vector<CartesianPoint>v{...};//place your values here //First, sort by Z std::sort(v.begin(), v.end(), [](const auto& p1, const auto& p2){return p1.z < p2.z;}); //Define a compare-by-y lambda auto yComp = [](const auto& p1, const auto& p2){return p1.y < p2.y;}; //Use yComp for first 4 v[] std::sort(v.begin(), v.begin() + 4, yComp); //And for the second std::sort(v.begin() + 4, v.begin() + 8, yComp); 重新排序时保存z订单,则y