Kendi iç sınıfım varsa, kendi sürümüm vector<char>
(kaynağı denetlerim) ve örnek için std::string
olarak değiştiremiyorum, std::string
olarak bellekten çalmanın bir yolu var. std::string
yapar.Std :: string'ten bellek almak mümkün mü (string stringer gibi)?
Yani böyle bir şey:
std::string str{"abcdefghijklmnopqrstu"};
MyVectorCharClass mvc(std::move(str)); // Constructor takes memory from str
Ben std::string
veya std::vector
için .release()
eklemek için bazı gelecekteki tekliflerin duydum düşünüyorum ama şu anda söz ediyorum.
10 eh? ama sonra str geçersiz bir dizge haline geliyor, bunu gerçekten istiyor musun? – Zeks
Vektör sınıfıyla ilgili tekerleği yeniden icat etmenin belirli bir nedeni var mı? std :: vector' tüm C++ standart kütüphanelerinde standartlaştırılmıştır, vektör sınıfınız değildir. –
Belki bazı performans değerlendirmeleri? Özel kullanım durumları? Büyük olasılıkla bir "öğrenme amaçlı" ya da bir şey. Ancak, tüm vakaların% 95'inde olmasına rağmen, tüm bu "dizeleri" ve "dynamic_array'ler" yazarken, saçma, bazen gereklidir. Özellikle, örneğin, bir çok kopyanız varsa ve profiler size söylerse, bu 'string :: string (const string &)' çok fazla çağrılırsa, uint64_t sayım sonucunu tutmak için çok küçüktü ... –