Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 57 — #95<br />
✐<br />
2.7. Introducción a los vectores<br />
(<strong>en</strong> este caso que va a manejar el vector), hay que poner el nombre del tipo deseado<br />
<strong>en</strong>tre «llaves angulares». Por lo que un vector de string se d<strong>en</strong>ota como vector.<br />
Con eso, se crea un vector a medida que solam<strong>en</strong>te cont<strong>en</strong>drá objetos<br />
string, y recibirá un m<strong>en</strong>saje de error del compilador si int<strong>en</strong>ta poner otra cosa <strong>en</strong><br />
él.<br />
Como el vector expresa el concepto de «cont<strong>en</strong>edor», debe existir una manera<br />
de meter cosas <strong>en</strong> él y sacar cosas de él. Para añadir un nuevo elem<strong>en</strong>to al final del<br />
vector, se una el método push_back(). Recuerde que, como es un método, hay que<br />
usar un ’.’ para invocarlo desde un objeto particular. La razón de que el nombre de<br />
la función parezca un poco verboso - push_back() <strong>en</strong> vez de algo más simple como<br />
put - es porque exist<strong>en</strong> otros cont<strong>en</strong>edores y otros métodos para poner nuevos<br />
elem<strong>en</strong>tos <strong>en</strong> los cont<strong>en</strong>edores. Por ejemplo, hay un insert() para poner algo <strong>en</strong><br />
medio de un cont<strong>en</strong>edor. vector la soporta pero su uso es más complicado y no<br />
necesitamos explorarla hasta el segundo volum<strong>en</strong> del libro. También hay un push-<br />
_front() (que no es parte de vector) para poner cosas al principio. Hay muchas<br />
más funciones miembro <strong>en</strong> vector y muchos más cont<strong>en</strong>edores <strong>en</strong> la Librería Estándar,<br />
pero le sorpr<strong>en</strong>derá ver la de cosas que se pued<strong>en</strong> hacer con sólo un par de<br />
características básicas.<br />
Así que se pued<strong>en</strong> introducir elem<strong>en</strong>tos <strong>en</strong> un vector con push_back() pero<br />
¿cómo puede sacar esos elem<strong>en</strong>tos La solución es intelig<strong>en</strong>te y elegante: se usa la sobrecarga<br />
de operadores para que el vector se parezca a un array. El array (que será<br />
descrito de forma más completa <strong>en</strong> el sigui<strong>en</strong>te capítulo) es un tipo de datos que está<br />
disponible prácticam<strong>en</strong>te <strong>en</strong> cualquier l<strong>en</strong>guaje de programación por lo que debería<br />
estar familiarizado con él. Los arrays son agregados lo que significa que consist<strong>en</strong><br />
<strong>en</strong> un número de elem<strong>en</strong>tos agrupados. La característica distintiva de un array es<br />
que estos elem<strong>en</strong>tos ti<strong>en</strong><strong>en</strong> el mismo tamaño y están organizados uno junto a otro. Y<br />
todavía más importante, que se pued<strong>en</strong> seleccionar mediante un índice, lo que significa<br />
que puede decir: «Quiero el elem<strong>en</strong>to número n» y el elem<strong>en</strong>to será producido,<br />
normalm<strong>en</strong>te de forma rápida. A pesar de que exist<strong>en</strong> excepciones <strong>en</strong> los l<strong>en</strong>guajes<br />
de programación, normalm<strong>en</strong>te se indica la «indexación» mediante corchetes, de tal<br />
forma que si se ti<strong>en</strong>e un array a y quiere obt<strong>en</strong>er el quinto elem<strong>en</strong>to, sólo ti<strong>en</strong>e que<br />
escribir a[4] (fíjese <strong>en</strong> que la indexación siempre empieza <strong>en</strong> cero).<br />
Esta forma compacta y poderosa de notación indexada se ha incorporado al vector<br />
mediante la sobrecarga de operadores como el > de los iostreams.<br />
De nuevo, no hay que saber cómo se ha implem<strong>en</strong>tado la sobrecarga de operadores<br />
- lo dejamos para un capítulo posterior - pero es útil que sea consci<strong>en</strong>te que hay<br />
algo de magia detrás de todo esto para conseguir que los corchetes funcion<strong>en</strong> con el<br />
vector.<br />
Con todo esto <strong>en</strong> m<strong>en</strong>te, ya puede ver un programa que usa la clase vector.<br />
Para usar un vector, hay que incluir el fichero de cabecera :<br />
//: C02:Fillvector.cpp<br />
// Copy an <strong>en</strong>tire file into a vector of string<br />
#include <br />
#include <br />
#include <br />
#include <br />
using namespace std;<br />
int main() {<br />
vector v;<br />
ifstream in("Fillvector.cpp");<br />
string line;<br />
57<br />
✐<br />
✐<br />
✐<br />
✐