Domingo 15 de Diciembre de 2024, 03:05
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Vectores Stl
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Vectores Stl (Leído 2594 veces)
paderni
Nuevo Miembro
Mensajes: 3
Vectores Stl
«
en:
Sábado 15 de Mayo de 2004, 21:33 »
0
Hola
:
Tengo una gran pelea con ese agradable contenedor de la stl llamado vector,
He declarado un vector tal que así:
vector <valor> v;
donde valor es un tipo definido por mi , que tiene como campos:
int conocido;
atributo & atr;
atributo también es un tipo definod por mi y tiene:
String id;
vector <String> vPosibles;
El problema viene cuando creo un objeto de tipo valor
valor v (atr, 1);
previamente creo uno de tipo atributo
vector <String> aux;
aux.push_back("a");
aux.push_back("b");
atributo atr( "Clase",aux);
pero cuando hago
v.push_back(aux);
No hace lo que quiero
.
¿Alguien sabe donde tengo el fallo?
Saludos.
PD:Porfavor contestarme, aunque no esteis seguros de que sea por eso por lo que no tira.
Tweet
nicokiki
Miembro MUY activo
Mensajes: 298
Re: Vectores Stl
«
Respuesta #1 en:
Sábado 15 de Mayo de 2004, 21:59 »
0
Hola!!!!!!
Antes q nada la clase String (o el tipo de dato String) como en JAVA no existe en C/C++ por si sola. Vos podes haberte creado una propia pero no es algo standard salvo q sea el de la STL y hayas hecho algo asi:
Typedef std::string String;
y ahi no habria problemas (ojo, no me acuerdo si el typedef iba con mayuscula al principio).
Lo otro q veo q estas haciendo mal es q le estas pusheando al vector el mismo vector, o sea, esta mal eso.
Ahhhhhh, estoy viendo q v es de tipo valor y tambien de tipo vector<valor>.
Lo q no entiendo es q eso ni te deberia compilar porque tenes dos variables con el mismo nombre.
Lo q deberias hacer es algo asi:
Valor MiValor(conocido, atr); //conocido ya seteado lo mismo q atr tal
//cual lo hiciste
v.push_back(MiValor);
Espero q haya servido.
P.D.: La STL es mas q agradable te digo, salvo q vos hayas hecho algo mejor q no pierda memoria ni nada por ningun lado, q tenga como 40 metodos, q corra en ambientes UNIX, no se, me parece q es algo bueno o no????
Salu2!!!!
paderni
Nuevo Miembro
Mensajes: 3
Re: Vectores Stl
«
Respuesta #2 en:
Sábado 15 de Mayo de 2004, 22:19 »
0
Estuve mirando en la ayuda del builder c++ 6.0 y typedef va con minusculas todo.
Gracias por comentar me lo del String que es distinto de string
Es que estoy trabajando con el Builder y String piensa que es AnsiString y de ahí viene el lio.
Muchas Gracias
nicokiki
Miembro MUY activo
Mensajes: 298
Re: Vectores Stl
«
Respuesta #3 en:
Domingo 16 de Mayo de 2004, 02:04 »
0
Hola de nuevo!!!!!!
El string tampoco es una tipo de datos C ni una clase de C++.
Los "strings" en C/C++ se manejan a traves de punteros a caracteres (no es como en Pascal q tenes un string de 255 caracteres o en JAVA q tenes una clase String, una clase StringBuffer, y asi con todo), o sea, "char*". Para poder manejarlos bien deberias manejar punteros aunque a un nivel bastante simple. Con el uso de char*, para poder realizar las operaciones basicas y q sean standard deberias incluir las librerias q te permiten hacer estas operaciones:
strcpy()
strcat()
strlen()
strstr()
Con esas deberia alcanzar y mirando las man pages o la MSDN te apareceran referencias a mil mas q son muy utiles.
Ahora, si estuvieras programando en MFC, podrias usar CString como dato "string", o como te dije antes, tambien bajo consola, MFC o lo q sea de GNU/LINUX podes usar los string de la STL, pero..............string como dijiste vos, se puede???? si se puede, quien es el q implemento eso??? o es algo q desarrollaste vos??? Yo tengo entendido y creo no estar equivocado q el string como dijiste vos no existe y si llegara a existir dudo q sea ANSI.
Bueno, te dejo, salu2!!!!!!!!!!
tiwas
Nuevo Miembro
Mensajes: 1
Re: Vectores Stl
«
Respuesta #4 en:
Domingo 16 de Mayo de 2004, 17:46 »
0
hola que tal? Pues te digo que en C++ si es posible usar la cadenas, para ello puedes usar la clase string (de la bibliotea estandar de C++), claro que tienes que incluir la libreria "string" (o sea, #include <string>) o la "string.h" que es una libreria antigua, para declarar una cadena seria: "string nombre_cadena;"
Por lo del fallo en tu programa, corrigeme si me equivoco,
Me parece que estas tratando de "meter" en v a aux (v.push_back(aux)), pero aux es un vector de string y v es un vector de de valor. En resumen, el vector v, solo recibe variables de tipo valor.
Espero haber ayudado en algo. Cualquier cosa no dudes en preguntar.
nicokiki
Miembro MUY activo
Mensajes: 298
Re: Vectores Stl
«
Respuesta #5 en:
Domingo 16 de Mayo de 2004, 20:04 »
0
Hola tiwas!!!!
Te cuento q
nicokiki
Miembro MUY activo
Mensajes: 298
Re: Vectores Stl
«
Respuesta #6 en:
Domingo 16 de Mayo de 2004, 20:10 »
0
Hola tiwas!!!!
Te cuento q cuando incluis a string.h es distinto de incluir a string . El primero te permite realizar ciertos operaciones y el segundo es el string de la STL.
El tipo de dato string en C/C++ no existe asi como decis vos. Si existen ciertas variaciones pero como dije antes no existe como si existe en Pascal o en otros lenguajes. Que existan mil millones de librerias q lo implementen puede ser, pero no existen por si solos, o sea, no se si son STANDARD.
Q haya algunos compiladores q lo traigan no implica q luego corra en otro sistema operativo por ejemplo.
La verdad es q no se donde viste el string, OJO, no niego q exista, pero si te digo si lees algun libro de C/C++ te aseguro q no lo dan comop tipo de dato y en C++ no existe como clase. Existen distintas implementaciones de los string como en MFC como dije antes pero asi como decis vos, lo dudo.
Por favor Juank te pido q me respondas si existe o no string a secas como tipo de dato nativo del lenguaje.
Salu2!!!!!
P.D.: El otro mensaje lo mande porque toque el mouse sin querer!!!!!!
Ruben3d
Miembro HIPER activo
Mensajes: 710
Nacionalidad:
Re: Vectores Stl
«
Respuesta #7 en:
Domingo 16 de Mayo de 2004, 21:44 »
0
Hola
En C++ la clase string forma parte de la librería estándar, dentro del namespace std, como los streams, y viene documentada en la especificación. Si algún compilador no la incluye es que no sigue la especificación (es como coger y no implementar la cadenas en Pascal, u olvidarse de crear los fstreams de C++ para acceder a ficheros). Que haya visto, viene en VS6, VS.NET y gcc (el de Borland nunca lo he usado, pero seguro que viene).
Un saludo.
Ruben3d
Personal
|
LinkedIn
nicokiki
Miembro MUY activo
Mensajes: 298
Re: Vectores Stl
«
Respuesta #8 en:
Domingo 16 de Mayo de 2004, 22:06 »
0
Hola Ruben3d!!
Entonces estas diciendo q la unica clase string es la de la STL, no???
Salu2!!!!!!
Ruben3d
Miembro HIPER activo
Mensajes: 710
Nacionalidad:
Re: Vectores Stl
«
Respuesta #9 en:
Lunes 17 de Mayo de 2004, 13:11 »
0
Hola.
Digo que la única clase string que figura en el estándar es la que está en el namespace std, que es una especialización de basic_string, y se incluye con el fichero de cabecera <string>. Eso no excluye que en las MFC, en las nuevas clases .NET o cualquier otro paquete de clases incluya también su propia clase string, que puede llamarse igual siempre y cuando esté en otro namespace.
Podéis ver todas las clases que componen el STL en la web de sgi, aqui os dejo un link a basic_string (con un ejemplo de string):
basic_string<charT, traits, Alloc>
string está definido de esta manera:
Código: Text
typedef basic_string<char> string;
Un saludo.
Ruben3d
Personal
|
LinkedIn
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Vectores Stl