2016-03-20 29 views
0

Bitiş listelerine ilişkin bir sorum var. Bu kullanıyorum bir örnek listesidir. kod (C++) olarakBir bitişik listedeki elemanların alınması

enter image description here

, bazı jenerik elemanın listelerin bir vektörü olarak bu uygulamak. Yani vector<list<element>>. Bu durumda, A, C, D, H, K, L, N öğelerinin tümü bir vektörde bulunur. Benim sorum belli bir elementi kapmak. adjList vektörü boyunca yinelemek için bir for döngüsü kullandığımı varsayalım. Bir vektörden bir eleman almak için, *vector name*[i] dır ve elementi kendisi alır. Fakat vektördeki eleman bir listenin başlangıcı olduğunda ne yapar? Diyelim ki sadece eleman D'u istiyorum. Bunu elde etmek için adjList[3] deyin. Bu sadece D'u yakalar mı? Yoksa D'dan başlayan tüm listeyi almayı mı söylüyorsun? Bütün listeyi istemiyorum, sadece D'u istiyorum. Bütün listeyi kaparsa, istediğim sadece bir elementi almamı nasıl sağlayabilirim? Birisi açıklamaya yardımcı olabilir mi?

+0

Bu "std :: vector" ve "std :: list" mü? –

+0

Evet, bunlar std vektörü ve listesi. – GenericUser01

cevap

1

Kendinizi yazarken, bir vector<list<element>>. Bu, adjList[i]'un listesinin listesini vereceği anlamına gelir. Kişisel A, C, D elemanları

list<element> l = adjList[i]; 
element D = l.front(); 

an listenin geri kalanı ile çalışmanız gerekir eğer ikincisi yararlı olabilir, adjList[i].front() veya verbosely olarak erişilir.

+0

Tamam, bu mantıklı. Bana bir liste verse de emin değildim ama şimdi anladım. Bunu benim için temizlediğin için teşekkür ederim. – GenericUser01