2012-05-09 24 views
9

Próbuję sprawdzić, czy wektor v1 jest wewnątrz wektora v2. Moje wektory są uporządkowane i wymagane jest, aby zamówienie zostało zachowane.Szukasz wektora C++ STL wewnątrz wektora STL

Na przykład, jeśli V1 = (a, b) i V2 = (e, f, a, b) chciałabym uzyskać iterację wskazując w v2.

Wyszukiwanie STL znajduje tylko jeden obiekt w wektorze. Domyślam się, że chcę czegoś podobnego do string :: find.

Czy jest w tym celu jakaś funkcja w STL?

+0

Kiedy mówisz, że twoje wektory są uporządkowane, masz na myśli, że są one uporządkowane według pewnych kryteriów, tak że możesz porównać jeden element z drugim, aby określić, który z nich jest pierwszy? Czy masz na myśli to, że ustawiłeś je w określonej kolejności, której nie można uzyskać po prostu patrząc na elementy i porównując je, ale czy coś zależy od czegoś na zewnątrz? –

+1

[std :: includes] (http://en.cppreference.com/w/cpp/algorithm/includes) może pomóc, ale nie wiesz, jakie zamawianie jest stosowane w twoim przypadku. –

+1

Zgodnie z zamówieniem mam na myśli, że użyłem wektora STL do modelowania uporządkowanej listy, której nie można uzyskać po prostu patrząc na elementy i porównując je. Muszę się dowiedzieć, czy członkowie v1 pojawili się w v2 w tej samej kolejności. Nie mogę posortować wektora. Podobnie jak nie sortujesz ciągu, gdy szukasz go dla wystąpienia innego ciągu. – Ari

Odpowiedz

13

Wygląda na to, że chcesz wyszukać podciąg w innej sekwencji. Możesz to zrobić za pomocą std::search z Biblioteki standardowej.

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

Dzięki, myślę, że właśnie tego szukałem! – Ari