2017-10-09 1 views
-2

내부 목록을 저장하는 최상위 목록이 있습니다. 표준 템플릿 라이브러리 목록 템플릿을 사용하고 있습니다.목록 목록 인쇄 C++ STL 목록

내부 목록의 값을 인쇄하려고합니다. 상단 목록은 "L"이고 내부 목록은 "I"입니다.

void ListofLists::dump() 
{ 
    list<list<IntObj>>::iterator itr; 
    for (itr = L.begin(); itr != L.end(); itr++) 
    { 
     list<IntObj>::iterator it; 
     for (it = I.begin(); it != I.end(); it++) 
     { 
      cout << *it << " "; 
     } 
     cout << endl << "End" << endl; 
    } 
} 

내 IDE 라인 cout << *it << " ";을 좋아하지 않으며 나는 목록의 내부 데이터를 인쇄 인이 무엇을 원하는 프로그램을하면서 변경하는 방법을 정말 모르겠어요. 그것은 빨간색은 "< <"연산자을 강조하고 "더 연산자"< <는 "이 피연산자 일치하지 않습니다."

사람이 왜 나를 도와 드릴까요라고? 나는 쳐다 보았고, 내가 찾는 것을 실제로 찾을 수 없다. 나는 뭔가 올바르게 이해하지 못한다. 내 IDE를 통해 내 지역을 볼 수 있기 때문에 데이터 구조에 데이터를 올바르게 추가한다는 것을 알고 있습니다.

도움을 주신 모든 분들께 감사드립니다! 의미심장하다.

list<IntObj>::const_iterator i; 

대신 사용하는 사람이 오류를 컴파일 방지하기 위해 :

+4

이렇게하려면 코드에 추가 한 'IntObj'를 인쇄하려고합니까? –

+1

목록을 저장하는 목록이 있지만 사용자의 목록과 다릅니다. 어떤 이유로 든 중첩 루프를 사용하여 출력하려고하는 두 개의 관련없는 목록이 있습니다. 또한 "My IDE does not like"를 명확히하고 [mcve] 감사를 작성하십시오. – Rakete1111

+0

나는 시금치를 좋아하지 않는다. IDE는 코드 라인을 좋아하지 않는다. 그것이 우리 모두가 우리의 단점을 가지고있는 방식입니다. –

답변

0

사용하려고합니다.

0

내부 루프가 의미가 없습니다. 당신이 다음 반복자를 사용하려면이 루프 범위 기반을 사용하는 것이 더 간단 할 것이다 그러나

이 기능은

void ListofLists::dump() /* const */ 
{ 
    for (list<list<IntObj>>::iterator itr = L.begin(); itr != L.end(); itr++) 
    { 
     for (list<IntObj>::iterator it = itr->begin(); it != itr->end(); it++) 
     { 
      cout << *it << " "; 
     } 
     cout << endl << "End" << endl; 
    } 
} 

과 같이 정의 할 수 있습니다. 예를

void ListofLists::dump() /* const */ 
{ 
    for (const auto &inner_list : L) 
    { 
     for (const auto &item : inner_list) 
     { 
      cout << item << " "; 
     } 
     cout << endl << "End" << endl; 
    } 
} 

당신은 클래스 IntObjoperator <<을 정의 할 필요가 고려. 그 선언은 다음과 같아야합니다

std::ostream & operator <<(std::ostream &, const IntObj &); 
+0

IntObj 클래스 외부에서 IntObj에 대한 ostream 연산자를 정의 할 수 있습니까? IntObj 파일을 편집 할 수 없습니다. 감사합니다 블라드. –

+0

@ AliciaSabatino 클래스 내에서 정의 할 수 있습니다.이 경우 ADL 조회가 사용됩니다. 연산자가 클래스의 개인 데이터 멤버에 직접 액세스하면 연산자는 friend로 선언되어야합니다. –

+0

오케이. 그래서 값이 IntObj에서 m_data에 저장된다고 ... 나는 단지 cout << m_data를 오버로드 된 함수로 작성하겠습니까? –