SORU
31 Mart 2010, ÇARŞAMBA


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
31 Mart 2010, ÇARŞAMBA


boost::array

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.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • RyanXLT

    RyanXLT

    22 Ocak 2011
  • Whizzpopping

    Whizzpopping

    10 Kasım 2005