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

  • bigky226

    bigky226

    11 HAZİRAN 2006
  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007