• Viernes 8 de Noviembre de 2024, 06:56

Autor Tema:  Inicializar Vectores En C++  (Leído 3942 veces)

mangelprap

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Inicializar Vectores En C++
« en: Sábado 7 de Julio de 2007, 17:10 »
0
Si en un fichero Nombreclase.hpp, como atributo privado existe un vector de enteros.
Por ejemplo,

#include "Nombreclase.hpp"
class Nombreclase{
private:
vector<int> l;
....
}

Como se puede crear un constructor para inicializar dicho vector con un numero determinado de posiciones (un entero n leido por teclado).

Actualmente utilizo el siguiente constructor en el archivo *.cpp
Nombreclase::Nombreclase(int n){
 l.resize(n);
}
Pero no quiero utilizar la funcion resize.

Muchas gracias!!

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Inicializar Vectores En C++
« Respuesta #1 en: Domingo 8 de Julio de 2007, 18:01 »
0
Si quieres utilizar un tamaño determinado y siempre vas a usar tipo de dato int, no necesitas usar Templates, mejor usa vectores normales:

//array de 50 posiciones por ejemeplo
int i[50];


Si realmente si deseas usar templates, prueba con esto:

vector<int> i(50) ;

esto inicializa el vector con memoria para 50 enteros.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

mangelprap

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Inicializar Vectores En C++
« Respuesta #2 en: Lunes 9 de Julio de 2007, 19:14 »
0
Entiendo lo que me dices, pero se trata de un objeto de una clase, no de un vector que declaro.
Y me daba un error de compilación al hacerlo de la manera que tu dices:

l(50); //porque el objeto ya lo he declarado en el fichero *.hpp

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Inicializar Vectores En C++
« Respuesta #3 en: Lunes 9 de Julio de 2007, 19:23 »
0
Entonces no entiendes lo que dije ni lo que estas haciendo (o al menos eso parece con la poca información que das.)

... no se si te puedas ubicar mejor, sino entonces pues la solución inicial, de acuerdo a los datos entregados, es que no lo declares dos veces, porque desde luego te seguirá mandando ese error. Declaralo solo una vez.

Si puedes retomar desde el principio y ser entonces mucho más claro mejor.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

mangelprap

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Inicializar Vectores En C++
« Respuesta #4 en: Lunes 9 de Julio de 2007, 20:29 »
0
Desde el principio:

Fichero 1:

#ifndef _LOT_HPP_
#define _LOT_HPP_

#include <vector>

class Lot
{
private:
  vector<int> l;
  static const int M = 10;

public:
  Lot();
  Lot(int n);
  ~Lot();
};
#endif

Fichero 2:
#include "Lot.hpp"

Lot::Lot(){}

Lot::Lot (int n)
{
  l.resize(n);
}
Lot::~Lot() {}

Fichero 3 o programa principal:

int n;
cin>>n;
Lot l(n); //Declaro el objeto con el tamaño que leido por teclado

Esto mismo, pero sin usar la funcion resize en la constructora de la clase.

De todas, formas, así de momento ya funciona. Gracias!!!!