Ho un progetto di elaborazione di immagini in espansione che fa molto affidamento sulla libreria OpenCV per gran parte delle sue funzionalità, anche se uso anche alcune funzioni di boost.Puntatori intelligenti OpenCV o Boost
Vorrei iniziare a utilizzare i puntatori intelligenti per sostituire alcuni puntatori grezzi che stanno iniziando a causare problemi. La mia domanda è su quale tipo di puntatore intelligente usare, con le mie scelte principali (credo) essere l'OpenCV cv::Ptr
o una delle varianti di boost.
mi rendo conto ci sono una number di questions spiegare la differenza tra ciascuno dei puntatori Boost, ma speravo che qualcuno potrebbe offrire una spiegazione di come cv::Ptr
confronta con loro e fare le raccomandazioni di uno o l'altro?
MODIFICA - Ho notato dallo OpenCV docs che Ptr
è simile a potenziare shared_ptr
, è la differenza essenziale solo quali librerie/file di inclusione sono necessari?
Avete considerato di utilizzare i puntatori intelligenti standard (se avete accesso a C++ 11)? – undu
+1 su 'std :: shared_ptr' se si utilizza C++ 11. Altrimenti dipende davvero dal fatto che tu stia già usando boost o stai pianificando di usare boost o di interoperare con le cose usando boost. Non penso valga la pena di includere boost solo per 'shared_ptr', dato che' cv :: Ptr' funziona abbastanza bene. – yiding
Quale si utilizzerà dipenderà piuttosto dalle API che si sta chiamando - questi 3 tipi di puntatori intelligenti non sono necessariamente intercambiabili o forniscono operatori di conversione tra di loro. Per questo motivo, ci sono spesso buoni motivi per usare l'implementazione di 'boost :: shared_ptr' invece di' std :: shared_ptr' quando si usano altre parti della libreria boost. Lo stesso è probabile che valga anche per OpenCV. – marko