Class Vector and random numbers in C ++

0

The function only returns the memory address, how do I get it to return the contents, not the memory address?

#include <iostream>
#include <time.h>  ///  por causa de srand()
#include <stdlib.h>   // para poder gerar os pesos aleatorios ou pra poder usar o rand()
#include <vector>   /// vector que armazenara os meus neuroneos
#include <deque>
#include <iomanip>   // por causa do setw()

int* pes;

void funcaoGerarPesos(){   /// sempre por referencia

    int colunas = 10;

    /// lembre-se que o numero de pesos é sempre igual ao tamanho de exemplo de treinamento
    for (j = 0; j < colunas; ++j)
    {
        srand(time(NULL));     //// responsavel pela geracao automatica

        peso_aleatorio = (rand() % 6) + 1;    //// armazenar o valor gerado na variavel valor_treinamento

        pes = &peso_aleatorio;    //// o meu ponteiro apontara para o valor contido na variavel peso_aleatorio

        vector_pesos.push_back(pes);    //// pegar todos os valores gerados e colocar no vector de pesos
    }

    //// percorrer com o while
    it = vector_pesos.begin();

    while(it != vector_pesos.end()){

        cout << *it << endl;
        it++;
    }
}


int main(int argc, char *argv[]){

    funcaoGerarPesos();
}
    
asked by anonymous 23.06.2015 / 00:16

1 answer

-1

Answering the last question in the comments (Since you already encountered the problem).

#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <vector>

int main(int argc, char **argv)
{
    std::vector<int> v;
    srand(time(NULL));
    for (int i = 0; i < 10; i++)
    {
        // O int e o ponteiro para int precisam ser redeclarados e redefinidos a cada iteração.
        int r = (rand() % 6) + 1;
        int *p;
        p = &r;
        v.push_back(*p);
    }
    std::vector<int>::iterator it = v.begin();
    while(it != v.end())
    {
        std::cout << *it << std::endl;
        it++;
    }
    return 0;
}

As you can see in my example, so that random numbers do not repeat, it is necessary to re-declare and reset the int and pointer to int within the for-loop scope.

Note that if your compiler supports the C ++ 2011 standard, you can iterate over the loop in a much simpler way:

for (auto e : v)
{
    std::cout << e << std::endl;
}
    
23.06.2015 / 00:31