elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  STL: Uso de list y string
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: STL: Uso de list y string  (Leído 2,265 veces)
david_BS

Desconectado Desconectado

Mensajes: 99



Ver Perfil WWW
STL: Uso de list y string
« en: 9 Mayo 2012, 00:39 am »

Esto es una muestra de código que demuestra como se usa una list para guardar elementos de tipo struct 'ScheduledCommand', que hace referencia a comandos que se van guardando y ejecutándose, dado que este código estaba aplicado a un sistema con consola de comandos. Lo que hice fue aislar el código referente al uso de list y demostrarlo con un ejemplo. Créditos para el proyecto OGC.

Descarga: http://www.mediafire.com/?pujccy7douubkgo

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 <list>
#include <string>

using namespace std;

struct ScheduledCommand
{
string comando;
int prioridad;
};

typedef list<ScheduledCommand> ScheduleList;
ScheduleList scheduleList;

Las funciones de agregar, listar y borrar
Código:
void IngresarComando(){

string cmd;
char comando[21];
memset(comando,0,sizeof(comando));
cout << "Ingrese un comando" << endl;
cin.getline(comando,20,'\n');
cmd.assign(comando);

// cout << const_cast<char*>(cmd.c_str()) << endl;
// system("pause");

if(cmd.empty()) // Si se ingresa una línea en blanco procede a mostrar los comandos en lista
{
list<ScheduledCommand>::iterator pos;
for(pos=scheduleList.begin();pos!=scheduleList.end();++pos)
{
printf("pri:%d -- cmd:\"%s\"\n", (*pos).prioridad, (*pos).comando.c_str() );
}
return;
}

ScheduledCommand tmp;
tmp.comando=cmd;
tmp.prioridad=1;
if(scheduleList.size()<32){
scheduleList.push_back(tmp);
}
}

void BorrarComandos(){

scheduleList.erase(scheduleList.begin(),scheduleList.end());
}

void VerificarComandos(){

cout << "\n";

int cantidad=0;
for( ScheduleList::iterator pos = scheduleList.begin(); pos != scheduleList.end(); ++pos)
{
// cantidad++;
if( (*pos).prioridad == 1 )
{
cantidad++;
cout << "Comando: " << const_cast<char*>((*pos).comando.c_str()) << endl;
scheduleList.erase(pos); // lo borra luego de verificarlo
break;
}
}

if(cantidad==0)
cout << "No hay comandos !" << endl;
}

La función main para realizar las pruebas..
Código:
int main(){

IngresarComando();
IngresarComando();
IngresarComando();

VerificarComandos();
VerificarComandos();
VerificarComandos();

BorrarComandos();

VerificarComandos();

cin.get();
return 0;
}


« Última modificación: 13 Mayo 2012, 00:11 am por david_BS » En línea

luke92

Desconectado Desconectado

Mensajes: 3


Software Libre o Muere!! :P


Ver Perfil WWW
Re: STL: Uso de list y string
« Respuesta #1 en: 12 Mayo 2012, 00:06 am »

Muy bueno! :D


En línea

Software Libre o Muere
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines