이것은 실제로 상황에 따라 다릅니다.
객체가 작고 객체의 사본을 작성하는 것이 경량 인 경우 stl 컨테이너에 데이터를 저장하는 것이 간단하고 평생 관리에 대해 걱정할 필요가 없기 때문에 내 의견으로는 관리하기가 더 쉽습니다.
객체가 크고 기본 생성자가 의미가 없거나 객체의 사본이 비싸면 포인터로 저장하는 것이 좋습니다.
객체에 대한 포인터를 사용하기로 결정한 경우 Boost Pointer Container Library를 살펴보십시오. . 이 부스트 라이브러리는 동적으로 할당 된 객체와 함께 사용할 수 있도록 모든 STL 컨테이너를 래핑합니다.
각 포인터 컨테이너 (예 : ptr_vector)는 컨테이너에 추가 될 때 객체의 소유권을 가져와 해당 객체의 수명을 관리합니다. 또한 참조로 ptr_ 컨테이너의 모든 요소에 액세스합니다. 이것은 당신이 같은 일을 할 수 있습니다
class BigExpensive { ... }
// create a pointer vector
ptr_vector<BigExpensive> bigVector;
bigVector.push_back( new BigExpensive( "Lexus", 57700 ) );
bigVector.push_back( new BigExpensive( "House", 15000000 );
// get a reference to the first element
MyClass& expensiveItem = bigList[0];
expensiveItem.sell();
이 클래스는 STL 컨테이너를 감싸고 모든 STL 알고리즘과 작동하므로 매우 편리합니다.
컨테이너의 포인터 소유권을 호출자에게 전달하는 기능도 있습니다 (대부분의 컨테이너에서 해제 기능을 통해).