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

  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • cyriak

    cyriak

    29 Mart 2006
  • Khan Academy

    Khan Academy

    17 Kasım 2006