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

  • PremiumBeat.com - Royalty Free Music

    PremiumBeat.

    16 Kasım 2008
  • Richard Laxa

    Richard Laxa

    30 AĞUSTOS 2012
  • XxMinayaxX1

    XxMinayaxX1

    9 Mayıs 2012