2014-09-08 20 views
8

Tasarımımda, std::vector<OtherClass> için çoğunlukla bir ön tarafa sahibim. Benim sınıf arayüzünde, tüm vector için bir referans üzerinden herhangi arayan bir std::iterator, el teslim veya benim vector içeriğine erişmek için işlevler kümesi sağlamak mıdır? Ya da tamamen farklı bir yaklaşım mı?Sınıfım çoğunlukla bir konteyner için bir ön, bu gerçeği ortaya çıkarmalı mıyım?

fazla bilgi: kapta elemanları başlatma sırasında kurulacaktır ve program normal çalışırken ilave edilmez. Sınıfımın istemcileri, çoğu zaman kritik bir durumda olmasa bile, OtherClass öğelerinin durumunu sorgular ve değiştirir.

+0

yerine sarıcı sınıfın üyelerinin 'std :: vector' kabul serbest fonksiyonlarını kullanmayı düşünün. – erenon

+3

Bu çok özel bir uygulamadır. Yineleyiciler işe yarayabilir, ancak eğer vektöre sürekli ekliyorsanız? Yineleyiciler, vektör yeniden tahsis edildiğinde geçersiz sayılır. Daha fazla bilgi verin lütfen! – Conduit

+0

'OtherClass' sabitse, neden uzmanlaşmıyorsunuz? – Nelfeal

cevap

1

dahili olarak vektör değiştirmek için işlevler oluşturmak gerekir. İşte nedeni:

Derleyiciye bağlı olarak, STL (Standart Şablon Kitaplığı) 'nın farklı sürümlerini çalıştırıyor olabilirsiniz; bu da beklenmedik sorunlara neden olabilir, varsayımsal olarak std :: vektörünün siz onu bir kütüphanenin eski (veya daha yeni) sürümü ve gönder.

Ancak, bu kütüphane değil tahmin ediyorum ya da bir proje potansiyel Başka bir derleyici ile kullanılacak. numaralı telefonu çalıştırdığınız ve STL'nin aynı sürümü ile derlediğiniz sürece, numaralı vektöre bir referans veya işaretçi göndermeniz güvenlidir.

İlgili konular