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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Consulta sobre declaración de vectores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consulta sobre declaración de vectores  (Leído 2,335 veces)
Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Consulta sobre declaración de vectores
« en: 22 Noviembre 2014, 21:51 pm »

Una consulta de la que los expertos se van a reir, pero como no lo soy  ;D

Un string cualquiera de una dimensión puede declararse directamente.

Código:
int a[5] = {-1, 1, 5, 12, -4}

Creo que no es posible (al menos el compilador me regaña), pero ¿existe algún constructor que me permita algo parecido con un vector?

¿y con un vector de mas de una dimensión?

Soy plenamente consciente de que puedo "apañar" una función a la que le pase un string o un array y lo meta en un vector, pero me pregunto si existe una forma diferente de hacerlo

Supongamos que tengo un vector tal que:

Código:
vector <vector<int> > Por_ejemplo

¿Existe algún modo de construir por ejemplo la fila 0 mediante una declaración del estilo de los arrays?

Si me decís "no, no puedes", pues me apaño una función para pasar los valores, pero si existe una forma diferente de hacerlo, sería mas que interesante conocerla

Según la referencia oficial de C++ esto no se puede, pero claro, preguntar no cuesta nada, y lo mismo aprendo 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
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Consulta sobre declaración de vectores
« Respuesta #1 en: 23 Noviembre 2014, 00:00 am »

Puedes usar su constructor:
Código
  1. vector<char> v(5, 'W'); // {'W', 'W', 'W', 'W', 'W'}

Pero lo que tú dices no se puede que yo sepa.

Siempre puedes hacer una función que transforme un array en un vector.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Consulta sobre declaración de vectores
« Respuesta #2 en: 23 Noviembre 2014, 04:07 am »

Un string cualquiera de una dimensión puede declararse directamente.
Código:
int a[5] = {-1, 1, 5, 12, -4}

Creo que no es posible (al menos el compilador me regaña), pero ¿existe algún constructor que me permita algo parecido con un vector?
Depende del modo de compilación, como indicar este (si para empezar es posible) depende del compilador utilizado.

A partir del nuevo estándar de C++ (C++11) se puede utilizar una lista de valores para inicializar varios tipos incluido la clase vector, por ejemplo:
Código
  1. vector<int> v = {4, 3, 2, 1, 0};
  2.  
  3. for (auto it = v.begin(); it != v.end(); ++it)
  4.   cout << *it << endl;

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
Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Consulta sobre declaración de vectores
« Respuesta #3 en: 23 Noviembre 2014, 11:59 am »

Aha... gracias por la aclaración. Me temo que el compilador GNU no contempla de momento todo el estándar C++11, de manera que tiraré "por la calle de enmedio" y hace una función para estas cosas. Afortunadamente según estoy viendo, si C++ no te deja hacer una cosa por un camino, puedes siempre intentarlo por otro sitio



Un tema que posiblemente muchos conocen, pero aprovecho para los que no.

No es necesario hacer una función para asignar un string a un vector, es posible hacerlo mediante el propio constructor del mismo:

Código:
    char A[] = {'K', 'R', 'O', 'N', 'O', 'S'};
    vector<char> Salida(A, A +sizeof(A) / sizeof(char));

    string S_Uno[] = {"Uno", "Dos", "Tres"};
    string S_Dos[] = {"Cuatro", "Cinco", "Seis"};
    vector<string> Uno(S_Uno, S_Uno +sizeof(S_Uno) / sizeof(string));
    vector<string> Dos(S_Dos, S_Dos +sizeof(S_Dos) / sizeof(string));

Tengo problemas a la hora de construir vectores de mas de una dimensión, pero para los vectores "normales" esta solución es bastante rápida
« Última modificación: 24 Noviembre 2014, 21:04 pm por Eternal Idol » En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pregunta tonta sobre declaracion... « 1 2 »
.NET (C#, VB.NET, ASP)
Edu 13 7,599 Último mensaje 20 Marzo 2011, 23:05 pm
por Edu
Snowden hará este jueves una “importante” declaración sobre el juicio de Manning
Noticias
Mister12 0 1,024 Último mensaje 2 Agosto 2013, 00:12 am
por Mister12
Anonymous y RedHack publican una declaración sobre OpDirenis
Noticias
wolfbcn 0 1,237 Último mensaje 4 Noviembre 2013, 19:03 pm
por wolfbcn
Consulta de un noob sobre vectores dinamicos para char
Programación C/C++
Akumadie 2 1,972 Último mensaje 23 Noviembre 2016, 03:08 am
por Akumadie
(Consulta) - Declaracion de punteros en Null
Programación C/C++
palacio29 2 1,772 Último mensaje 16 Mayo 2019, 09:29 am
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines