2010-03-15 2 views

답변

7

부스트를 사용하는 경우 boost::ptr_vector이 더 적합 할 수 있습니다.

그렇지 않은 경우 벡터의 요소를 제안하거나 수동으로 삭제하면 shared_ptr을 사용하거나 수동으로 삭제할 수 있습니다.

유지 관리의 관점에서 보면 shared_ptr이 가장 좋습니다. 그러나 shared_ptr은 성능에 대한 벌칙을 부과 할 수 있으며 이는 귀하의 애플리케이션에 중요 할 수도 있고 아닐 수도 있습니다.

2

과도한 공격이지만 조금 더 좋은 스마트 포인터는 없습니다. 부스트의 포인터 컨테이너를 고려할 수도 있습니다.

C++ 0x에서는 컨테이너에 std::unique_ptr을 저장할 수있어 사용자의 요구에 더 가깝습니다.

+0

boost :: shared_ptr – amitlicht

+0

+1 unique_ptr의 컨테이너에 +1을 사용 중입니다! – AshleysBrain

1

Boost.PointerContainer을 사용할 수도 있습니다. shared_ptr을 사용하면 공유 소유권을 나타냅니다. 확실하다면, 당신의 객체가 컨테이너의 수명에 묶여 있다면, PointerContainer이 더 현명한 설계 방법이 될 것입니다.

4

낮은 수준의 성능/메모리 사용이 중요한 요구 사항 (모든 경우의 97 %)이 아니라면 shared_ptr로 이동하십시오. 그것은 간단하고 잘 이해됩니다.

소유욕을 더 정확하게 유지하려는 경우 boost::ptr_vector이 더 좋을 수도 있지만 클래스가 다른 메모리를 관리하지 않으면 소멸자에서 수동으로 삭제하는 것만 큼 큰 것은 아닙니다. 우리가 때로는 믿음을 갖기 때문에 죄를 지어주었습니다 .- 나는 큰 RAII 지지자이지만, 때때로 이것을 때때로합니다.

관련 문제