«smart-pointers» etiketlenmiş sorular

Otomatik çöp toplama veya sınır denetimi gibi ek özellikler sağlarken bir işaretçiyi simüle eden soyut bir veri türü



4
Ne zaman işaretçi kullanırım?
Tamam, son kez C ++ 'ı bir yaşam için yazdım std::auto_ptr, std lib'in mevcut olduğu ve boost::shared_ptrtüm öfke oldu. Ben gerçekten sağlanan diğer akıllı işaretçi türleri artış içine baktım. C ++ 11'in artık bazı türlerde artış sağladığını anlıyorum, ancak hepsini değil. Peki birisinin hangi akıllı işaretçiyi ne zaman kullanacağını belirlemek …


2
Neden unique_ptr öğesini bir vektör içine itemiyorum?
Bu programda sorun nedir? #include <memory> #include <vector> int main() { std::vector<std::unique_ptr<int>> vec; int x(1); std::unique_ptr<int> ptr2x(&x); vec.push_back(ptr2x); //This tiny command has a vicious error. return 0; } Hata: In file included from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/c++allocator.h:34:0, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/allocator.h:48, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/memory:64, from main.cpp:6: c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp …


4
std :: auto_ptr - std :: unique_ptr
Yeni standart geldiğinde (ve bazı derleyicilerde zaten mevcut olan parçalar), yeni tipin std::unique_ptryerini alması gerekiyor std::auto_ptr. Kullanımları tam olarak örtüşüyor mu (böylece kodum üzerinde küresel bir bulma / değiştirme yapabilirim (bunu yapmam değil, ama yaptım)) veya belgeleri okumadan belirgin olmayan bazı farklılıkların farkında olmalı mıyım? Ayrıca doğrudan bir yedek ise, …

2
Sınıf üyeleri için akıllı işaretçiler kullanma
C ++ 11 sınıf üyeleri olarak akıllı işaretçi kullanımını anlamakta sorun yaşıyorum. Akıllı işaretçiler hakkında çok şey okudum unique_ptrve genel olarak nasıl ve shared_ptr/ nasıl weak_ptrçalıştığını anladığımı düşünüyorum . Anlamadığım şey gerçek kullanımdır. Herkesin unique_ptrneredeyse her zaman gitmek için bir yol olarak kullanılmasını önerdiği görülüyor . Ama böyle bir şeyi …

8
C ++ kitaplıkları ve çerçeveleri neden asla akıllı işaretçiler kullanmıyor?
Birkaç makalede, ham işaretçilerin neredeyse hiç kullanılmaması gerektiğini okudum. Bunun yerine, ister kapsamlandırılmış ister paylaşılan işaretçiler olsun, daima akıllı işaretçilerin içine sarılmalıdır. Ancak, Qt, wxWidgets ve Boost gibi kütüphanelerin, sanki hiç kullanmıyormuş gibi, akıllı işaretçiler asla geri dönmediğini veya beklemediğini fark ettim. Bunun yerine geri dönerler veya ham işaretçiler beklerler. …

6
Neden std :: bir std :: shared_ptr taşıyayım?
Clang kaynak koduna bakıyordum ve şu pasajı buldum: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Neden isteyeyim std::movebir std::shared_ptr? Paylaşılan bir kaynakta sahipliği aktaran herhangi bir nokta var mı? Neden bunun yerine bunu yapmayayım? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = Value; }


3
Hangi C ++ Akıllı İşaretçi Uygulamaları mevcuttur?
Karşılaştırmalar, Artıları, Eksileri ve Ne Zaman Kullanılmalı? Bu, basit bir cevap olduğunu düşündüğüm şeyin bazı özel akıllı işaretçi uygulamaları hakkında birçok yorum ürettiği bir çöp toplama dizisinden bir yan üründür, bu nedenle yeni bir gönderiye başlamaya değer görünüyordu. Nihayetinde soru, C ++ 'da akıllı işaretçilerin çeşitli uygulamaları nelerdir ve nasıl …


5
C ++ 'daki normal işaretçilerle karşılaştırıldığında akıllı işaretçilerin ek yükü ne kadar?
C ++ 11'deki normal işaretçilerle karşılaştırıldığında akıllı işaretçilerin ek yükü ne kadar? Başka bir deyişle, akıllı işaretçiler kullanırsam kodum daha yavaş mı olacak ve eğer öyleyse ne kadar yavaş olacak? Özellikle, C ++ 11 std::shared_ptrve std::unique_ptr. Açıkçası, yığından aşağı itilen şeyler daha büyük olacak (en azından öyle düşünüyorum), çünkü akıllı …

4
Shared_ptr nerede?
Shared_ptr'nin nerede olduğunu bulmaya çalıştıktan birkaç saat sonra şu anda çok sinirliyim. Gördüğüm örneklerin hiçbiri, başlıkları içeren shared_ptr(ve çalışan) tam kod göstermiyor . Basitçe belirterek std, tr1ve <memory>hiç yardımcı olmuyor! Takviyeleri indirdim ve hepsi ama yine de görünmüyor! Birisi tam olarak nerede bulacağımı söyleyerek bana yardım edebilir mi? Hayal kırıklıklarımı …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.