 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Perico Invitado
|
Publicado: Lun 08 Nov, 2004 8:46 pm Asunto: mas sobre std::vector (a ver si lo ve Cesar...) |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 09 Nov, 2004 12:37 am Asunto: |
|
|
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
}
//--------------------------------------------------------------------------- |
_________________
 |
|
| Volver arriba |
|
 |
Perico Invitado
|
Publicado: Mar 09 Nov, 2004 8:08 am Asunto: Gracias |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 09 Nov, 2004 5:20 pm Asunto: |
|
|
si es correcto, por las prisas, se me olvido, indicar que la posicion es unsigned int
saludos.. _________________
 |
|
| Volver arriba |
|
 |
Perico Invitado
|
Publicado: Mie 10 Nov, 2004 7:06 pm Asunto: Una error ...creo |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 10 Nov, 2004 8:27 pm Asunto: |
|
|
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. _________________
 |
|
| Volver arriba |
|
 |
Perico Invitado
|
Publicado: Mie 10 Nov, 2004 9:09 pm Asunto: hola de nuevo profesor... |
|
|
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 |
|
 |
Invitado
|
Publicado: Mie 10 Nov, 2004 9:13 pm Asunto: Re: hola de nuevo profesor... |
|
|
| 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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 10 Nov, 2004 9:14 pm Asunto: |
|
|
el anterior, soy yo.. _________________
 |
|
| Volver arriba |
|
 |
Perico Invitado
|
Publicado: Mie 10 Nov, 2004 10:46 pm Asunto: M U C H A S G R A C I A S ! ! ! |
|
|
| pues eso, que muchas gracias por todo, creo que ya tengo resuelto todo gracias a ti Cesar. |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|