SORU
9 Temmuz 2011, CUMARTESİ


Std arasındaki fark nedir::dizi ve std::vector? Ne zaman birini kullanıyor musunuz?

std::array std::vector arasındaki fark nedir? Ne zaman birini kullanıyor musunuz?

Her zaman kullandığım ve C dizileri, fark nedir? C kullanmanın bir yolu olarak std:vector kabul

CEVAP
9 Temmuz 2011, CUMARTESİ


std::array klasik C dizisinin sadece sınıf bir versiyonu. Bu boyutu derleme zamanında sabit olduğu anlamına gelir ve tek bir yığın (yığın üzerinde yer alacak gibi) olarak tahsis edilecektir. Bu avantajı nesne ve dizilmiş verileri arasında yönlendirme yok çünkü daha iyi bir performans.

std::vector küçük bir sınıf yığın işaretçileri içeren. (Ayırdığınızda çok ** 5, her zaman*.* 6 çağırır) Onlar biraz daha yavaş erişim çünkü o tavsiyeler olması kovaladı almak için dizilmiş veri... Ama karşılığında, onlar olabilir yeniden boyutlandırılabilir ve onlar sadece önemsiz bir miktar yığın alanı ne kadar büyük olursa olsun.

[Düzenle]

Diğer üzerinde kullanma zamanı gelince, dürüst olmak gerekirse std::vector istediğin hemen hemen her zaman. Bu büyük nesneler oluşturma yığın genellikle üzerine kaşlarını çattı ve ek yönlendirme düzeyi genellikle ilgisizdir. Eğer tüm öğeleri boyunca yineleme yapmak (örneğin, fazladan bir bellek erişimi sadece bir kez döngü başında olur.)

Vektör öğeleri bitişik olmasını garanti altına alınmıştır, &vec[0] herhangi bir fonksiyonu bir dizi için bir işaretçi bekliyor; örneğin, C kütüphane rutinleri iletebilirsiniz. (Bir kenara olarak, std::vector<char> buf(8192); doğrudan çağırmadan 10* *veya benzeri çağrıları için yerel arabellek ayırmak için harika bir yoldur*. *11)

O dedi, bu eksikliği ekstra düzeyde yönlendirme, artı bir derleme zamanı sabiti boyutu, yapabilirsiniz std::array önemli ölçüde daha hızlı bir çok küçük dizi ... oluşturulan/yok/erişilen bir sürü.

Benim tavsiyem şu olabilir: bir sorun var (a) profiler size söyler sürece Kullanın. std::vectorve(b) bir dizi küçük.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Justin Davis

    Justin Davis

    14 Ocak 2008
  • Le Cargo !

    Le Cargo !

    24 HAZİRAN 2007
  • manadude21

    manadude21

    11 Mart 2008