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

  • CNNMoney

    CNNMoney

    16 Kasım 2006
  • GALERNAYA20

    GALERNAYA20

    19 NİSAN 2011
  • Le Cargo !

    Le Cargo !

    24 HAZİRAN 2007