Enviado por Llyn en Algoritmos, C/C++, Programacion
¿Cómo iterar en sentido contrario?
Respuesta: reverse_iterator
Lo puedes conseguir en la librería STL, bajo la cabezera <iterator>. Es una función que retorna un adaptador sobre un iterador. Su uso es práctico, pero tal vez no intuitivo, al menos no para mí. Digamos que queremos iterar en reversa con for_each() un arreglo tal como el siguiente.
int arr[10] = { 0, 1, 4, 7, 8, 3, 16, 3, 9, 11 };
Podemos hacerlo con:
for_each(reverse_iterator<int *>(arr + 10), reverse_iterator<int *>(arr), foo);
Notar que el iterador de inicio corresponde lo que en el sentido original seria el iterador final y viceversa. De hecho, podríamos decir que lo siguiente es cierto:
v.rbegin() = reverse_iterator<vector<int>::iterator>(v.end()); v.rend() = reverse_iterator<vector<int>::iterator>(v.begin());
Siendo v un vector de enteros cualquiera. El punto es que reverse_iterator
char * word = "PALABRA", * word_end = word + strlen(word); if (equal(word, word_end, reverse_iterator<char *>(word_end))) cout << "Es palíndrome" << endl; else cout << "No es palíndrome" << endl;
Posts Relacionados
- Usar una imagen como portada de carpeta en Windows Un tema corto, en Windows existen varias formas de tener...
- ¿Cómo jugar Prince of Persia en Windows 7 64 Bits? Hola! Bastante tiempo, eh? No, no me había olvidado de...
- Balanceo de expresiones usando pilas en c++ Buenas El balanceo de expresiones (no se con que otro...
- Intento de grep en c++ Buenas. Necesitaba este pequeño programita para algo que estoy haciendo,...
- Balanceo de expresiones II Buenas. Ayer en este post hablabamos de balanceo de expresiones...
- Iterando en el dominio de una función Bien, volvemos a la programación, bueno casi. Tenemos este problema,...
- 500! Buenas. Hace unos días en un post sobre permutaciones dabamos...



de igual forma para chars se usaría con std::string para comparar
string s;
string(s.rbegin(), s.rend()) == s
Usando