Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: david_BS en 8 Mayo 2012, 02:44 am



Título: STL: Uso de vector para manejo de una entidad
Publicado por: david_BS en 8 Mayo 2012, 02:44 am
Hola de nuevo.
Voy a mostrar un ejemplo del uso de un vector para manejar una especie de lista de entidades. Una entidad en este caso, se representa mediante una struct. Para este ejemplo, la struct va a tener algunos miembros de tipo entero solamente, con el fin de simplificar.

Es un código básico en el cual se permite mediante funciones, agregar y borrar entidades, y listar datos de entidades.

Se trata de mostrar un uso básico de 'vector' de la STL

Créditos al proyecto OGC por su aplicación original.

El proyecto en MSVC++ se puede descargar a continuación:
http://www.mediafire.com/?jq1tfjylz5qj8js

Código:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// UTN FRGP TSP
// BS
// mail: david_bs@live.com
// web: Etalking.Com.Ar
// 2012
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <windows.h>
#include <stdio.h>

#include <fstream.h>
#include <string>
#include <vector>

using namespace std;

typedef struct estructura_s{
int a;
int b;
int c;
}estructura_t;

struct ent_info{
estructura_s* ent;
};

vector<ent_info> vEntidad;

Las estructuras representativas de una entidad ya fueron mostradas, luego se crea un vector de entidades.

Agregar y borrar entidades; listar items de una entidad.
Código:
void AgregarEntidad(struct estructura_s* ent)
{
ent_info dummy;
dummy.ent = ent;
if(vEntidad.size()<64)
vEntidad.push_back(dummy);
}

void BorrarVectorDeEntidades()
{
vEntidad.clear();
}

void ListarItemsDeEntidades(){

for(unsigned int ab=0; ab<vEntidad.size(); ab++){

cout << "La entidad: " << ab << endl;
cout << "Item 1: " << vEntidad[ab].ent->a << endl;
cout << "Item 2: " << vEntidad[ab].ent->b << endl;
cout << "Item 3: " << vEntidad[ab].ent->c << endl;
}
}

Código:
int main(){

BorrarVectorDeEntidades();

struct estructura_s ent1;
struct estructura_s ent2;
struct estructura_s ent3;
ent1.a=111;
ent1.b=222;
ent1.c=333;
ent2.a=444;
ent2.b=555;
ent2.c=666;
ent3.a=777;
ent3.b=888;
ent3.c=999;

AgregarEntidad(&ent1);
AgregarEntidad(&ent2);
AgregarEntidad(&ent3);

ListarItemsDeEntidades();

cin.get();
return 0;
}