0

No se que quiere decir esta parte de codigo cuando pone vector<string>, ¿A qué se refiere eso?

Es para la implementacion de una tabla hash.

vector<string> dividir(string dato){
    vector<string> temp(4);
    int j = 0;
    for(int i = 0 ; i < dato.size(); i++){
        if(dato[i]==','){
            j++;
            continue;
        }
        temp[j]+=dato[i];
    }
    return temp;
}
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82
Hey L1nk
  • 79
  • 1
  • 8

2 Answers2

1

En C++ existen lo que se conocen como plantillas, que básicamente son moldes para futuras clases y objetos.

En este caso el código está haciendo uso de una plantilla de la librería estándar llamada std::vector. Esta plantilla reproduce el comportamiento de una lista de valores. Es básicamente un contenedor que te permite almacenar objetos. ¿Qué tipo de objetos? pues el que esté indicado en la especialización de la plantilla:

vector<string>
       ~~~~~~ Especialización

Es decir, vector<string> es un contenedor para objetos de tipo string.

Referencias:

eferion
  • 49,291
  • 5
  • 30
  • 72
1

vector es una colección o contenedor de objetos, los contenedores de objetos de C++ son homogéneas, es decir: tods los objetos guardados son del mismo tipo. C++ tiene varios tipos de contenedores de objetos con diferentes características y objetivos, echa un vistazo a este hilo para conocer esas características.

En el caso de vector, su característica principal es que todos los elementos que guarda están colocados anexos en memoria, es muy rápido recorrer sus elementos y es potencialmente lento añadir elementos nuevos.

Puedes tener vector de diferentes datos, para decidir qué tipo de datos quieres que guarde tu vector debes indicarlo entre paréntesis angulares (< y >), se usa esta notación porque vector es una plantilla (tal y como ha explicado eferion).


Veamos los usos que le estás dando a vector<string> en tu código:

vector<string> dividir(string dato){

Defines una función llamada dividir que recibe un string y devuelve un vector<string>.

vector<string> temp(4);

Creas una instancia de vector<string> llamada temp que nacerá con cuatro elementos.

for(int i = 0 ; i < dato.size(); i++){
    if(dato[i]==','){
        j++;
        continue;
    }
    temp[j]+=dato[i];
}

Recorres los caracteres de dato y cada vez que encuentras una coma (,) aumentas j. Si el caracter encontrado no es una coma, lo concatenas en el j-ésimo elemento de temp.

A juzgar por el código, esperas que dato sea una cadena de caracteres con cuatro palabras separadas por tres comas (por ejemplo: "uno, dos, tres, cuatro") al pasarlo a dividir te devolverá un vector<string> con cuatro elementos ("uno", " dos", " tres", " cuatro").

Ve con cuidado porque si pasas a dividir una cadena con más de tres comas, tu programa fallará en tiempo de ejecución y si pasas menos de tres comas recibirás un vector<string> con elementos válidos pero vacíos.

PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82