SORU
25 Mayıs 2009, PAZARTESİ


c kümesi için back_inserter?

Bu basit bir soru sanırım. Böyle bir şey yapmanı istiyorum:

std::set<int> s1, s2;
s1 = getAnExcitingSet();
transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor());

Tabii ki, back_inserter beri çalışmıyor push_back yok. std::inserter da bir yineleyici ihtiyacı var? Ne yapacağımdan emin değilim o yüzden yerleştirici kullanmadım. Kimsenin bir fikri olan var mı?

Tabii ki, başka seçeneğim s2, ve daha sonra sıralamak için bir vektör kullanmaktır. Belki de daha iyi oluyor?

CEVAP
25 Mayıs 2009, PAZARTESİ


set bir öğenin konumunu ayarlamak karşılaştırıcı tarafından belirlenir, çünkü push_back yok. std::inserter Kullanım ve geçirir .begin():

std::set<int> s1, s2;
s1 = getAnExcitingSet();
transform(s1.begin(), s1.end(), 
          std::inserter(s2, s2.begin()), ExcitingUnaryFunctor());

Ekle yineleyici sonra x değeri yazılı zaman yineleyici geçirildiği s2.insert(s2.begin(), x) arayacak. Set eklemek için bir ipucu olarak yineleyici kullanır. -İyi s2.end() kullanabilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Semantic Mastery

    Semantic Mas

    30 EKİM 2013
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005
  • TopOfTheTech

    TopOfTheTech

    5 NİSAN 2010