2014-12-31 2 views
0

구조체 가장자리의 벡터 (HLL)가 있습니다. 나는 그것의 무게에 따라 그것을 정렬 할 usinf C++ 표준 : : 정렬() 주에서맞춤 구조체 정렬이 작동하지 않습니다.

struct Edge { 
    ll aId, bId ; 
    double w; 
    Edge(){} 


    bool operator < (const Edge & E)const 
    { 
      if(w < E.w) return -1; 
      else return 1; 
    } 

}; 

// Here follows many push operations 

sort(HLL.begin(), HLL.end()); 
for(int i = 0 ; i < HLL.size() ; i ++){ 
     cout << HLL[i].w << endl; 
} 

내가 STL 종류 라는이

212.132 
474.342 
300 
667.083 
500 
200 

이 가치인가 다음과 같은 출력을 :(제공 원조 또는 입찰은?

에 영향을 미치는의 나는

엑스 코드 5.0에서 맥 코드 출력을 사용하고 전에 같은 문제에 직면 17,451,515,

여기 UVA 문제 [http://ideone.com/39XIqO][1]

UPD를 위해 작성 내 전체 코드에 대한 링크입니다 :

+0

'return -1;'당신은 다른 경로에 대해 각각'return false;'를 사용 했습니까? –

+0

'-1'과'1'은 모두 "true"이고, 컴파일러는'int'에서'bool' 로의 변환에 대해 꽤 중요한 경고를 짖어야합니다. 그렇지 않은 경우 경고 수준을 높입니다. 'return w WhozCraig

+0

네, 맞습니다. 참/거짓을 사용해야합니다. 고마워 .. 내가 qsort –

답변

1

std::sort()strict weak order 낳는 부울, 이항 조건을 필요로 대답했다. 귀하의 술어는 분명 부울이 아닙니다. 1false-1으로 해석하면 은 엄격한 약한 순서를 나타내야합니다.

+0

고마워요 답변을 위해 @WhozCraig 전 당신의 충고를 따를 것입니다. :) –

관련 문제