2013-11-04 5 views
0

나는 개인 구성원으로 목록 개체와 템플릿 클래스를 만드는 오전과 C++의 목록 작성 :초기 용량

. 
. 
. 
private: 

list<E> listObject; 

}; 

첫 번째 생성자 (10)의 용량 목록 객체를 생성한다을 어떻게 것 그렇게?

template<class T, class E> 
Queue<T,E>::Queue() 
{ 
listObject.resize(10); 

} 

또는

template<class T, class E> 
Queue<T,E>::Queue() 
{ 
listObject = new list<E>(10); 

} 

또는 다른 생각

?

+0

아직 컴파일하고 실행 해 보셨습니까? –

+1

[[std :: list'] (http://en.cppreference.com/w/cpp/container/list)에 대한 참조, 특히 [생성자] (http : // en. cppreference.com/w/cpp/container/list/list). 그 후에 ['std :: queue'] (http://en.cppreference.com/w/cpp/container/queue)에 대해 읽어보십시오. –

+0

나는이 단계에서 [좋은 입문서] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)를 읽는 것이 더 생산적 일 것이라고 생각한다. – juanchopanza

답변

0

크기 인수를 목록의 생성자가있다. 당신은 당신이 정보가 필요 경우, 초기화 목록

template<class T, class E> 
Queue<T,E>::Queue() 
: listObject(10) 
{} 

를 사용하여 클래스의 생성자에서이 생성자를 호출 검색 및 초기화 목록에 대해 배울 수 있습니다. std::list 클래스의 생성자에 대한 자세한 내용은 reference website에서 확인할 수 있습니다. 여기서는 제가 한 일입니다. 처음 시작했을 때 긴 일련의 생성자가 조금 있다고 인정하지만.

그 페이지는이 카운트가 지정된 카운트 (C++ 11로 가정)로 다음과 같이 말합니다 : "T의 카운트 값 초기화 된 (기본값으로 생성 된, 클래스의 경우) 인스턴스로 컨테이너를 구성하십시오."

1

가장 관용적 인 옵션은 입니다. 원하는 크기의 목록을 초기화하십시오. 이것은 생성자 초기화 목록에서 수행됩니다

Queue<T,E>::Queue() : listObject(10) 
{ 
    .... 
} 

이 10 개 기본 구성 개체의 목록을 떠날 것이다 (당신이 실제로는 다른 문제입니다 필요가 있는지). C++ 11이 선언의 시점에서 데이터 멤버를 초기화 할 수

참고. 그래서 당신은이 작업을 수행 할 수 있습니다 :

template <typename T, typename E> Queue 
{ 
    .... 
    list<E> listObject = list<E>{10}; 
}; 

std::list here에.