2015-01-06 1 views
-6
#include <iostream> 
#include <algorithm> 

using namespace std; 

class myclass 
{ 
    public: 
    int start; 
    int end; 
}; 

bool comp (const myclass &a,const myclass &b) 
{ 
    return a.start < b.start; 
} 
int main (void) 
{ 
    int n,temp,t,l,r,i,j; 
    cin>>t; 
    while (t != 0) 
    { 
     cin>>n; 
     temp = n; 
     i = 0; 
     myclass arr[100000]; 
     while (temp != 0) 
     {  
      cin>>l>>r; 
      arr[i].start = l; 
      arr[i].end = r; 
      i++; 
      temp--; 
     } 

     for (j = 0; j < i; j++) 
      cout<<arr[i].start<<" "<<arr[i].end<<"\n"; 
     cout<<"\n"; 
     sort(arr,arr+i,comp); 
     for (j = 0; j < i; j++) 
      cout<<arr[i].start<<" "<<arr[i].end<<"\n"; 
    t--; 
    } 
    return 0; 
} 

클래스를 만들었으므로 해당 myclass 배열의 값을 스캔하려고합니다. 그러나 입력 한 값을 인쇄 할 때 0을 모두 표시합니다. 값 입력을 게시하면 값을 정렬해야하지만, 문제는 입력이 사용자 지정 클래스의 배열에서 제대로 나오지 않는다는 것입니다. 이 일에서 내가 뭘 잘못하고 있니? 이러한 루프 내부 [j]모든 데이터 값을 0으로 초기화하는 이유는 무엇입니까?

+1

은 : 클래스의 멤버가 공개하고 직접 접근하는 나쁜 관행으로 간주됩니다. 멤버에 직접 액세스 할 수있는 간단한 데이터 구조를 만들고 싶다면 클래스 대신에'struct'를 사용하십시오. –

+1

@AntonPoznyakovskiy Bah,'struct' 또는'class'를 사용하면 아무런 차이가 없습니다. 'struct'는이 경우에 일부 타이핑을 저장하는 이점이 있습니다. 이것이'class'를 선호하는 유일한 이유입니다. – juanchopanza

답변

5

변경 [i] : 보조 노트로

for (j = 0; j < i; j++) 
    cout<<arr[j].start<<" "<<arr[j].end<<"\n"; 
관련 문제