C Standart Kütüphane sarıcı işlevleri kullanıyor musunuz?
This question, bu sabah sordum, bana C Standart kütüphanesinden eksik olduğunu düşünüyorum, ve sarıcı işlevleri ile boşlukları doldurma konusunda ne kadar gitti diye merak ettim. Örneğin, kendi programı kütüphanem vektör eklemek için bu işlevi vardır
template <class T>
std::vector<T> & operator = ( std::vector<T> & v1,
const std::vector <T> & v2 ) {
v1.insert( v1.end(), v2.begin(), v2.end() );
return v1;
}
ve bu takas (daha fazla veya daha az) için her tür - std gibi şeyler için özellikle yararlı::yığın:
template <class C>
void Clear( C & c ) {
c = C();
}
Bir kaç tane daha var, ama kullandığınız ilgileniyorum? Sınır cevaplar lütfensarıcıkod fonksiyonları - yani birkaç satır daha.
CEVAP
içerir(kap, val)(oldukça basit ama kullanışlı).
template<typename C, typename T>
bool contains(const C& container, const T& val) {
return std::find(std::begin(container), std::end(container), val) != std::end(container);
}
remove_unstable(begin, end, değer)
CYBH daha hızlı bir versiyonu::kalan nesnelerin düzenini korumak değil istisna ile kaldırın.
template <typename T>
T remove_unstable(T start, T stop, const typename T::value_type& val){
while(start != stop) {
if (*start == val) {
--stop;
::std::iter_swap(start, stop);
} else {
start;
}
}
return stop;
}
(pod türleri (tamsayı, kayan nokta vb) bir vektör durumda ve neredeyse tüm nesneler kaldırılır, std::) daha hızlı kaldırın.
TR 24731 'uyumlu' işlevleri ...
C işaretçileri NULL veya 0 (sıfır) kul...
Nasıl düzgün C ad kullanıyor musunuz ?...
Kaçınılmalıdır / gereken standart kütü...
Nasıl dll (STL) Standart Kütüphane sın...