dizeleri vs::değişmez standart bir dize
Son D değişmez dizeleri seçtim, here dizeleri ve here de değişmez ile ilgili bir şeyler okuyordum. Pek çok avantajı var gibi görünüyor.
- basit iş parçacığı güvenli
- daha güvenli
- daha fazla bellek kullanımı çoğu durumda etkili.
- daha alt dizeleri (ve Dilimleme tokenizing)
En yeni diller değişmez dizeleri söz, D2 değil.0,, C#, Python, Java vb.
C değişmez dizeleri yararlanacak?
Bu avantajlara sahip olacağını c (veya c 0 x) değişmez dize bir sınıf uygulamak mümkün mü?
güncelleme:
Değişmez dizeler iki girişimleri const_string fix_str vardır. Ne yarım on yıl içinde güncellendi. Hatta kullanılır? Neden mi const_string şimdiye kadar artış oldu?
CEVAP
Bu konuyu çoğu insan gerçekten immutable_string
anlamıyorum buldum. Sadece constness değildir. immutable_string
gerçekten güç performansı (hatta tek iş programı) ve bellek kullanımı.
Hayal eğer tüm dizeleri değişmez, ve her dizesi gibi uygulanır
class string {
char* _head ;
size_t _len ;
} ;
Nasıl alt str bir işlem uygulayabilir miyiz? Herhangi bir char kopyalama gerek yok. Tek yapmamız gereken _head
ata _len
. Sub-string kaynak, string ile aynı hafıza segmenti paylaşıyor.
Tabii gerçekten bir immutable_string sadece iki veri üyeleri ile sağlayabiliriz. Gerçek uygulama referans-saydım(veya uçmak ağırlıklı) bir bellek bloğu gerekebilir. Bu gibi
class immutable_string {
boost::fly_weight<std::string> _s ;
char* _head ;
size_t _len ;
} ;
Bellek ve performans özellikle de ne yaptığını biliyorsun çoğu zaman geleneksel dize daha iyi olurdu.
Elbette C değişmez dize yararlanabilir ve güzel bir tane var. boost::const_string
fix_str
Cubbi tarafından belirtilen kontrol ettim. Bu bahsettiğim şey olmalı.
JavaScript dizeleri değişmez. Bir &; s...
Bir kodlama için standart bir yolu yok...
::standart bir dize karşılaştırma (diz...
Etrafında dize char dizi bildirimi geç...
Nasıl Listesi< tüm dizeleri Dönüştür...