나는이 std::vector< std::vector<double> >
항목이있는이다, 배열을
1 80 -0.15 -0.9 -0.15 0.6 0 -1.5
1 81 -0.15 -0.9 -0.15 0.7 0 -1.6
1 82 -0.15 -0.9 -0.15 0.8 0 -1.7
1 83 -0.15 -0.9 -0.15 0.9 0 -1.8
.
.
.
79 155 0.15 0.9 0.15 -0.9 0 1.8
79 156 0.15 0.9 0.15 -0.8 0 1.7
79 157 0.15 0.9 0.15 -0.7 0 1.6
79 158 0.15 0.9 0.15 -0.6 0 1.5
각 행에는 8 개의 요소가 있습니다. 함수를 사용하여 7 번째 및 8 번째 요소로 배열을 정렬하고 싶습니다.std::sort
auto sortfunc = [](vector<double> va, vector<double> vb){ return (va[7] < vb[7] ) && (va[6]< vb[6] ); };
sort(array.begin(),array.end(), sortfunc );
결과는 완전히 정렬 된 배열이 아닙니다.
3 153 -0.15 -0.7 0.1 -0.1 -0.25 -0.6
2 154 -0.15 -0.8 0.1 0 -0.25 -0.8
2 153 -0.15 -0.8 0.1 -0.1 -0.25 -0.7
2 152 -0.15 -0.8 0.1 -0.2 -0.25 -0.6
7 153 -0.1 -0.7 0.1 -0.1 -0.2 -0.6
7 154 -0.1 -0.7 0.1 0 -0.2 -0.7
.
.
.
74 94 0.1 0.8 -0.05 -0.5 0.15 1.3
74 95 0.1 0.8 -0.05 -0.4 0.15 1.2
74 96 0.1 0.8 -0.05 -0.3 0.15 1.1
74 97 0.1 0.8 -0.05 -0.2 0.15 1
77 100 0.15 0.7 -0.05 0.1 0.2 0.6
77 99 0.15 0.7 -0.05 0 0.2 0.7
7 번째 및 8 번째 열의 요소가 특정 순서로 나타나지 않기 때문에 주어진 조건에 따라 정렬 된 배열을 제공하지 않습니다.
내가 여기서 뭘 잘못하고 있니?
어레이에 대한 Github Gist는 여기
정렬 기준이 눈에 띄지 않습니다. 다음과 같은 것이 더 필요하다고 생각합니다.
auto sortfunc = [](std::vector<double> const& va, std::vector<double> const& vb)
{
if(va[7] == vb[7])
return va[6] < vb[6];
return va[7] < vb[7];
};
첫 번째 열이 같지 않은 경우 첫 번째 열을 기준으로 정렬합니다.이 경우 두 번째 열에 따라 정렬합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다