2012-05-09 16 views
9

v1 vektörünün v2 vektöründe olup olmadığını görmeye çalışıyorum. Vektörlerim sipariş edilir ve siparişin korunması gerekir. ÖrneğinBir STL vektörünün içindeki bir C++ STL vektörünü bulmak için

, eğer v1 = ben içinde bir işaret bir yineleyici istiyorum ve V2 = ( b, e, f, a) (bir, b) v2.

STL, yalnızca bir vektörün içinde bir nesne bulur. Sanırım istediğim, string :: find'a benzer bir şey.

Bunu yapmak için STL'de herhangi bir işlev var mı?

+0

Vektörlerinizin sipariş edildiğini söylediğinizde, hangisinin önce geldiğini belirlemek için bir öğeyi diğerine göre karşılaştırabilmeniz için bazı ölçütlere göre sıralandıklarını mı söylüyorsunuz? Yoksa onları sadece elementlere bakarak ve bunları karşılaştırarak elde edilemeyen belirli bir düzende ayarladığınızı mı kastediyorsunuz, ama dışarıda bir şeylere bağlı mı? –

+1

[std :: includes] (http://en.cppreference.com/w/cpp/algorithm/includes) yardımcı olabilir, ancak sizin durumunuzda hangi siparişin kullanıldığını bilmiyorum. –

+1

Siparişi vererek, STL vektörünü, sadece öğelere bakarak ve bunları karşılaştırarak elde edilemeyen sıralı bir listeyi modellemek için kullandım. V1 üyelerinin v2'de aynı sırada görünüp görünmediğini öğrenmem gerekiyor. Vektörü sıralayamıyorum. Tıpkı başka bir dizgenin meydana gelmesi için arama yaptığınızda bir dizgeyi sıralamıyormuşsunuz gibi. – Ari

cevap

13

Başka bir dizinin içinde bir sıra aramak istediğiniz gibi görünüyor. Bunu, Standard Library'den std::search ile yapabilirsiniz.

auto it = std::search(v2.begin(), v2.end(), v1.begin(), v1.end()); 
+0

Teşekkürler, bence aradığım şey bu! – Ari