Credits: BS, OGC A demostration of the usage of std::list and std::string to create part of a command management system for a console command interpreter. Code: ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // 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; The functions to add, list and erase Code: void IngresarComando(){ string cmd; char comando[21]; memset(comando,0,sizeof(comando)); cout << "Introduce a command" << endl; cin.getline(comando,20,'\n'); cmd.assign(comando); // cout << const_cast<char*>(cmd.c_str()) << endl; // system("pause"); if(cmd.empty()) { 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); break; } } if(cantidad==0) cout << "There are no commands !" << endl; } Main function, used for testing purposes.. Code: int main(){ IngresarComando(); IngresarComando(); IngresarComando(); VerificarComandos(); VerificarComandos(); VerificarComandos(); BorrarComandos(); VerificarComandos(); cin.get(); return 0; }