Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

mas sobre std::vector (a ver si lo ve Cesar...)

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: mas sobre std::vector (a ver si lo ve Cesar...) Responder citando

Hola a todos en primer lugar,

Tengo un std::vector <int> va(1);

bueno todo funciona bien, lo que pasa es que me gustaria saber si existe alguna fución para buscar un valor dentro del vector y que me dé la posición donde se encuentra. He mirado la ayuda pero me hago un lio de verdad.
Se que lo puedo hacer con un while() pero claro si vector ya tiene esa funcion pues mejor.
Gracias a todos
Volver arriba
Mensaje    Asunto: Responder citando

vamos a ver,

declaramos el vector, tal y cual lo haces..
asi mismo declaramos una forma de busqueda lineal, si necesitas ordenarlo, puedes usar qsort, o busqueda binaria para mas facilidad

Código:
std::vector<int> v;
int BuscarElmento(std::vector<int> tuVector, int Elemento){
    //asumimos busqueda lineal., por lo que puede o no
    //estar ordenado..
    for(int pos_vector=0;pos_vector < tuVector.size()-1;pos_vector ++){
        //si lo encontramos, regresamos la posicion..
            if(tuVector[pos_vector] == Elemento)
                return pos_vector;
    }
    //indicamos, que no existe, a travez de -1,
    //por que 0, es la primera posicion del vector.
    return -1;//no existe..
}
//**********************************************


dentro de un boton.. relleno el vector, con valores, y uso la funcion, buscarElemento.., para encontrarlo

Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//metemos datos
v.push_back(11); //0
v.push_back(21); //1
v.push_back(13); //2
v.push_back(4);  //3
v.push_back(2);  //4
v.push_back(1);  //5
v.push_back(17);//6
// buscamos el elemento
this->Caption = BuscarElmento(v,2);  // posicion 4
}
//---------------------------------------------------------------------------

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Gracias Responder citando

Muchas gracias por la función, me lo has dado todo hecho y encima se entiende perfectamente!

por cierto da un warning en el for:
"W8012 Comparing signed and unsigned values"
lo he arreglado con:
for(unsigned int pos_vector=0;pos_vector < TuVector.size()-1;pos_vector ++)

Gracias Cesar
Volver arriba
Mensaje    Asunto: Responder citando

si es correcto, por las prisas, se me olvido, indicar que la posicion es unsigned int

saludos..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Una error ...creo Responder citando

Teniendo esto:
v es un vector de enteros
for (unsigned int r=0;r<v.size()-1;r++)

Si v.size() es 1 (tenemos una celda), nunca entraria en el for, ya que mientras r sea < que size... y r vale 0 y size vale 1-1=0, pues ya no entra en el for y no se puede recorrer cuando hay un solo elemento.

Que opinas?
Volver arriba
Mensaje    Asunto: Responder citando

correccion

Código:
for(int pos_vector=0;pos_vector < tuVector.size()-1;pos_vector ++)


aumentale, un <=
Código:

//                             aqui
for(int pos_vector=0;pos_vector <= tuVector.size()-1;pos_vector ++)


Recuerda que tuVector.size(), regresa un entero, con el numero de elementos, en este caso, el vector, solo tiene 1, elemento en la posicion, 0, si le quitas el -1, entonces, el for, le dice que verifique, la posicion, 1, y el vector, no tiene nada, asi que te marca una excepcion..

saludos.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: hola de nuevo profesor... Responder citando

es que ahora no se como elimiar un std::vector creado dinamicamente, es decir tengo una clase y dentro de esa clase tengo definido el vector, al eliniar un objeto de mi clase, se eliminará también el std::vector que tengo definido dentro? o tengo que elminarlo antes de destruir mi objeto?

esto es lo que tengo:
class Tic
{
public:
int ID;
String name;
int posX;
int posY;
std::vector <int> vec;
TImage *Image;
TLabel *Label;
};

Muchas gracias, estas siendo de gran ayuda
Volver arriba
Mensaje    Asunto: Re: hola de nuevo profesor... Responder citando

Perico escribió:
es que ahora no se como elimiar un std::vector creado dinamicamente, es decir tengo una clase y dentro de esa clase tengo definido el vector, al eliniar un objeto de mi clase, se eliminará también el std::vector que tengo definido dentro? o tengo que elminarlo antes de destruir mi objeto?

esto es lo que tengo:
class Tic
{
public:
int ID;
String name;
int posX;
int posY;
std::vector <int> vec;
TImage *Image;
TLabel *Label;
};

Muchas gracias, estas siendo de gran ayuda



Perico escribió:
definido el vector, al eliniar un objeto de mi clase, se eliminará también el std::vector que tengo definido dentro?

respuesta: si
Perico escribió:
]tengo que elminarlo antes de destruir mi objeto?

Respuesta: puedes eliminarlo en el destructor de tu clase, es igual, de preferencia, hazlo, dentro del destructor..

saudos.
Volver arriba
Mensaje    Asunto: Responder citando

el anterior, soy yo..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: M U C H A S G R A C I A S ! ! ! Responder citando

pues eso, que muchas gracias por todo, creo que ya tengo resuelto todo gracias a ti Cesar.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.