Articles of iteratore

Ordinamento di un vettore in ordine decrescente

Dovrei usare std::sort(numbers.begin(), numbers.end(), std::greater()); o std::sort(numbers.rbegin(), numbers.rend()); // note: reverse iterators ordinare un vettore in ordine decrescente? Ci sono vantaggi o svantaggi con un approccio o l’altro?

Iterator restituisce gli articoli per riferimento, problema di durata

Ho un problema a vita , sto cercando di implementare un iteratore che restituisce i suoi articoli per riferimento, ecco il codice: struct Foo { d: [u8; 42], pos: usize } impl Iterator for Foo { fn next(&’a mut self) -> Option { let r = self.d.get(self.pos); if r.is_some() { self.pos += 1; } r […]

Posso convertire un iteratore inverso in un iteratore in avanti?

Ho una class chiamata Action , che è essenzialmente un wrapper attorno a una deque di oggetti Move . Perché ho bisogno di attraversare il deque di Moves sia in avanti che all’indietro, ho un iteratore in avanti e un reverse_iterator come variabili membro della class. La ragione di questo è perché ho bisogno di […]

Iterazione in coppia in C # o enumeratore di windows scorrevoli

Se ho un IEnumerable come: string[] items = new string[] { “a”, “b”, “c”, “d” }; Vorrei passare attraverso tutte le coppie di articoli consecutivi (finestra scorrevole di dimensione 2). Quale sarebbe (“a”,”b”), (“b”, “c”), (“c”, “d”) La mia soluzione era questa public static IEnumerable<Pair> Pairs(IEnumerable enumerable) { IEnumerator e = enumerable.GetEnumerator(); e.MoveNext(); T current […]

Eliminazione di elementi dal set STL durante l’iterazione

Devo passare attraverso un set e rimuovere elementi che soddisfano un criterio predefinito. Questo è il codice di prova che ho scritto: #include #include void printElement(int value) { std::cout << value << " "; } int main() { int initNum[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; std::set numbers(initNum, […]

vettore cancella iteratore

Ho questo codice: int main() { vector res; res.push_back(1); vector::iterator it = res.begin(); for( ; it != res.end(); it++) { it = res.erase(it); //if(it == res.end()) // return 0; } } “Un iteratore di accesso casuale che punta alla nuova posizione dell’elemento che ha seguito l’ultimo elemento cancellato dalla chiamata di funzione, che è il […]

Qual è il modo più efficace per ottenere l’indice di un iteratore di un vettore std ::?

Sto iterando su un vettore e ho bisogno dell’indice a cui sta puntando l’iteratore. AFAIK questo può essere fatto in due modi: it – vec.begin() std::distance(vec.begin(), it) Quali sono i pro e i contro di questi metodi?

Trova la posizione dell’elemento in loop C ++ 11 basato su intervallo?

Supponiamo di avere il seguente codice: vector list; for(auto& elem:list) { int i = elem; } Posso trovare la posizione di elem nel vettore senza mantenere un iteratore separato?

Usando la variabile iteratore del ciclo foreach in un’espressione lambda – perché fallisce?

Considera il seguente codice: public class MyClass { public delegate string PrintHelloType(string greeting); public void Execute() { Type[] types = new Type[] { typeof(string), typeof(float), typeof(int)}; List helloMethods = new List(); foreach (var type in types) { var sayHello = new PrintHelloType(greeting => SayGreetingToType(type, greeting)); helloMethods.Add(sayHello); } foreach (var helloMethod in helloMethods) { Console.WriteLine(helloMethod(“Hi”)); } […]

Qual è il modo migliore per scorrere simultaneamente su due o più contenitori

C ++ 11 offre diversi modi per iterare sui contenitori. Per esempio: Ciclo basato su intervalli for(auto c : container) fun(c) std :: for_each for_each(container.begin(),container.end(),fun) Tuttavia, qual è il modo consigliato di scorrere su due (o più) contenitori della stessa dimensione per ottenere qualcosa come: for(unsigned i = 0; i < containerA.size(); ++i) { containerA[i] […]