2012-06-14 17 views
15

Nesnelerle dolu bir std::vector sahibim. Bazı yüklemelerin true değerini yeni bir std::vector döndürdüğü tüm öğeleri filtrelemek ve kopyalamak istiyorum.Std :: vektörü belirli bir filtreli diğer vektörlerden nasıl yapılır?

find ve search işlevlerine baktım, ancak yalnızca yineleyicileri döndürüyorlar.

ObjC++ kullanıyorum, böylece yardımcı olur, blok işlevlerinin yanı sıra, functor'ları kullanabilirim. C++ 11 işlevlerini kullanamazsınız. St12 :: copy_if yöntemini kullanarak

cevap

15

Eğer C++ 11 kullanıyorsanız, Eugen'ın yanıtında önerildiği şekilde std::copy_if kullanın. Aksi taktirde, std::remove_copy_if 'u yüklemenizin mantığına uygun modifikasyonlarla kullanabilirsiniz.

+0

@Protheus "remove_copy_if" tam olarak sezgisel değil, bu yüzden kaçırmak kolaydır. Neyse ki C++ 11 nihayet bize copy_if'i veriyor. – juanchopanza

11

. Bakınız here.

+1

Ah, bu yüzden sonunda C++ 11'de var! Http://lists.boost.org/Archives/boost/2001/01/8022.php adresinden el yapımı bir uygulama önereceğim. –

İlgili konular