Std :: vector <bool> nasıl ortaya çıktı?


15

Bugün, neredeyse tüm C ++ geliştiricileri std::vector<bool>, bir konteyner olmadığı için bunun bir hata olduğu konusunda hemfikirdir ve kullanım durumları büyük ölçüde std::bitsetyine de bunlarla örtüşmektedir .

Standarda nasıl oy verildi? O zaman tartışmalı mıydı? Ana destekleyici argümanlar nelerdi?


Daha std::vectorönce yazılmadı std::bitsetmı?
dan04


3
Ayrıca Herb Sutter, std::vector<bool> burada ve burada hakkında kapsamlı bir şekilde yazıyor . Yazılarına biraz daha girerseniz, ihtiyacınız olan tüm bilgileri bulacaksınız.
Robert Harvey

Yanıtlar:


10

Alıntı referansı kullanarak Herb Sutter'den:

Vektör uzmanlığı, bir proxy kabının nasıl yazılacağına dair bir örnek sunmak için kasten standart haline getirilmiştir. "Proxy kapsayıcı", nesnelerini doğrudan almadığınız kapsayıcıdır; Proxy içeren bir kapsayıcı, içerilen bir nesneye işaretçiler veya başvurular vermek yerine, içerilen bir nesneye dolaylı olarak erişmek veya işlemek için kullanılabilecek proxy nesneleri verir. Proxy eklenmiş koleksiyonlar, koleksiyon içindeki nesnelere her zaman doğrudan bellekte olduğu gibi doğrudan erişilemediği durumlarda, örneğin kapakların altındaki belleklerin içine ve dışına otomatik olarak sayfalar koyan disk tabanlı bir koleksiyonda yararlı olabilir. gerekli. Buradaki fikir, böyle bir proxy koleksiyonunun "konteyner" in gereksinimlerini nasıl karşılayacağını göstermekti

Ve evet, o zaman tartışma vardı.

  1. Tüm kanlı ayrıntılar için DejaNews'e gidin ve Subject = "vector and bool" ve Forum = " c ++ " için güçlü bir arama yapın . Tartışmalar Ocak / Şubat 1997'de gerçekleşti. Ayrıca, vektör uzmanlığının nasıl kapatılacağını soran insanlardan daha yeni tartışmalar bulacaksınız; tavsiyem için bu makalenin sonuna bakın.

Gerisi tarih. Ve bu kadar iyi bağlantılar içeren cevapsız bir soru görmekten nefret ediyorum.

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.