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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Eliminar todos los elementos de un vector
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Eliminar todos los elementos de un vector  (Leído 3,191 veces)
chihue

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Eliminar todos los elementos de un vector
« en: 7 Enero 2015, 16:57 pm »

Tengo un vecor donde se guardan los diferentes datos de los clientes:
Código:
struct cliente{
int identificador;
string c;
string nombre;
string direccion;
string correo;
string ciudad;
};
const int MAXClientes = 1000;
typedef cliente VecClientes [MAXClientes];
Y una función donde llena los datos desde el archivo clientes
Código:
void FncLeerClientesFich(ifstream &f, VecClientes v, int &tam){
string id;
v.clear();
tam=0;
while (!f.eof()){
getline (f,id);
v[tam].identificador = atoi(id.c_str());
getline (f,v[tam].c);
getline (f,v[tam].nombre);
getline (f,v[tam].direccion);
getline (f,v[tam].correo);
getline (f,v[tam].ciudad);
tam++;
}

}

El problema que me da error en la función clear me sale: [Error] request for member 'clear' in 'v', which is of pointer type 'cliente*' (maybe you meant to use '->' ?)

Como seria para eliminar el vector?


« Última modificación: 7 Enero 2015, 17:01 pm por chihue » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Eliminar todos los elementos de un vector
« Respuesta #1 en: 7 Enero 2015, 17:32 pm »

Tengo un vecor
No es un vector, es un array, ahí empieza el problema.

El problema que me da error en la función clear me sale: [Error] request for member 'clear' in 'v', which is of pointer type 'cliente*' (maybe you meant to use '->' ?)
Ese mensaje se genera porque cuando utilizas el nombre de un array como argumento de una función esta recibe la dirección en memoria de (un puntero a) su primer elemento. Antes de utilizar el mentado puntero debes aplicar indireccion, a eso se refiere la parte del mensaje "maybe you meant to use '->' ?". Pero aun cuando se aplicara indireccion no se resolverá el problema de fondo: estas tratando de utilizar un array como un objeto de la clase vector (llamando a su función miembro clear) y eso no es posible.

Como seria para eliminar el vector?
Las operaciones sobre tu array deben realizarse de forma manual, en el caso de tu función basta con colocar el contador de numero de elementos (el parámetro por referencia "tam") a cero y eso ya esta implementado.

Si quieres utilizar un vector en lugar de un array una referencia en linea cortesía del sitio C Plus Plus es std::vector.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
chihue

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Eliminar todos los elementos de un vector
« Respuesta #2 en: 7 Enero 2015, 19:01 pm »

Como haria entonces para vaciar ese array?
En línea

Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Eliminar todos los elementos de un vector
« Respuesta #3 en: 7 Enero 2015, 20:45 pm »

La pregunta sería que harás con ese array tras la función, porque no se pasa por referencia (a menos que me haya liado yo) y seguirá exactamente como estaba tras pasar por la función.

La función tal y como está no devuelve nada, ¿o me he perdido algo?
En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Eliminar todos los elementos de un vector
« Respuesta #4 en: 8 Enero 2015, 02:49 am »

Como haria entonces para vaciar ese array?
Los arrays no se vacían, en su lugar utilizas una variable para tomar nota del numero de elementos utilizados y eso ya lo haces en tu función con la variable "tam".

----

La función tal y como está no devuelve nada, ¿o me he perdido algo?
Ya que los elementos del array se modifican mediante indireccion con el operador "[]" y el numero de estos se indica mediante el parámetro por referencia "tam" no hay necesidad de retornar algo.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Eliminar todos los elementos de un vector
« Respuesta #5 en: 8 Enero 2015, 05:57 am »

Yo primeramente me preguntaria de donde se saco la funcion "v.clear();"
acaso no es un simple arreglo de struct
asi que como jodidos saco un metodo no es una clase u objeto

ha por ultimo los arreglos estaticos no se puden eliminar porque se crean en tiempo de compilacion y no de ejecucion como si seria el caso de arreglos dinamicos
« Última modificación: 8 Enero 2015, 05:59 am por crack81 » En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Eliminar elementos repetidos de un vector
Programación General
GaLaN GaLaNaSo 3000 2 63,430 Último mensaje 16 Noviembre 2011, 06:44 am
por osolmm
Consulta SQL;Listar elementos que estan presentes en TODOS los elementos de otra
Desarrollo Web
astinx 2 5,175 Último mensaje 2 Noviembre 2011, 23:06 pm
por astinx
Introducir elementos de un vector en orden
Programación C/C++
Katerina Dobreva 3 3,064 Último mensaje 15 Noviembre 2014, 11:54 am
por Eternal Idol
Eliminar elementos de un vector
Programación C/C++
chihue 1 2,359 Último mensaje 3 Enero 2015, 03:13 am
por rir3760
Vector Java Intercambio de dos elementos
Java
Lizzy021 3 4,247 Último mensaje 6 Septiembre 2015, 16:57 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines