각 노드에 자식 노드에 대한 포인터 만있는 이진 트리가 있으면 unique_ptr
이 잘 작동합니다. 각 노드가 부모 포인터를 갖기를 원한다면, 노드가 가리키는 세 개의 포인터가있을 수 있으므로 상황이 좋지 않습니다. Binary Tree with parent pointer이진 트리에 대한 스마트 포인터
이 경우 어떻게해야합니까? 모든 것에 대해 shared_ptr
을 사용할 수는 있지만 사이클을 얻을 수 있기 때문에 좋은 디자인이 아니라고 들었습니다. 부모 포인터로 weak_ptr
을 사용한다면, shared_ptr
이 무엇입니까? weak_ptr
을 만드시겠습니까?
일반 내장 포인터가이 문제에 더 적합 할 수 있다고 생각하기 시작했습니다. 어떤 조언을 크게 주시면 감사하겠습니다.
'std :: unique_ptr'과 부모에 대한 소유하지 않은 ** 원시 포인터의 쌍에는 아무런 문제가 없습니다. – StoryTeller
대부분의 경우 스마트 포인터는 간단한 자체 삭제 포인터가 아니라 소유 프리미티브로 사용되어야합니다."자원"은 단 하나의 소유자 ('std :: unique_ptr') 또는 복수의 동시 소유자 ('std :: shared_ptr' 포함)를 가질 수 있습니까? –
어쩌면 여기에 혼자가 있지만 btree 구현에서 스마트 포인터를 사용하는 것이 가장 좋습니다. 당신이 제어 할 수있는 구체적인 클래스 내에서 원시 포인터를 사용할 때 아무런 문제가 없다. 또한 "주인이되는 것"이라는 개념은 나무에 묶여있는 하나 이상의 "직관적 인"견해가 있습니다. 나중에 그래프 작업을 구현하고 싶다면 아마도 엉망이 될 것입니다. –