Joao brandao Posted April 20, 2012 at 01:57 PM Report #450179 Posted April 20, 2012 at 01:57 PM Boa tarde, eu quando estava a melhorar e um exercicio que tinha feito e questionei me sobre a existencia de uma função que nos coloca se um determinado numero de numeros num vector. Eu encontrei a funçao memset mas essa funçao apenas coloca da posiçao 1 ate a posiçao que queremos copiar.. Eu queria uma que fosse da posiçao x ate a posiçao y. isto sem ter que gastar memoria ao ter que fazer um ciclo para isto. Alguem tem conhecimento de uma funçao que nos faça isso?
HappyHippyHippo Posted April 20, 2012 at 02:11 PM Report #450185 Posted April 20, 2012 at 02:11 PM a função memset coloca o espaço de memória com o valor determinado : void * buffer; int byte_inicial; int byte_final; ... // iniciar o array buffer // atribuir valores significativos a byte_inicial e byte_final ... memset(&buffer[byte_inicial], // posição inicial da memória a ser atribuída 0, // valor a ser atribuído a cada byte byte_final - byte_inicial); // número de bytes a serem atribuídos IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Joao brandao Posted April 20, 2012 at 02:25 PM Author Report #450193 Posted April 20, 2012 at 02:25 PM pk colocas te void * buffer; ?
bsccara Posted April 20, 2012 at 02:50 PM Report #450199 Posted April 20, 2012 at 02:50 PM Atenção a uma coisa: os vectores do C++, tal como todas as outras estruturas da STL, são estruturas opacas, pelo que qualquer acesso ao seu conteúdo deve ser feito pelos membros definidos para isso. O que quer dizer que nunca deves tentar aceder ao conteúdo por outros processos (como usar o memset para inicializar vários elementos duma vez). Podes ver aqui a definição dos vectores: http://www.cplusplus.com/reference/stl/vector/ Em C, há quem chame vectores a arrays mas não devem ser confundidos com os do C++. 'void *' é um ponteiro genérico, sem tipo. Pode ser usado sempre que o tipo real do ponteiro não seja conhecido durante a compilação. Por exemplo uma função que retorna um ponteiro para um de vários tipos de estruturas diferentes deve ser declarada como devolvendo um 'void *'.
pmg Posted April 20, 2012 at 02:55 PM Report #450203 Posted April 20, 2012 at 02:55 PM pk colocas te void * buffer; ? Suponho que tenha sido um lapso. Devia ter sido char *buffer ou unsigned char *buffer. O Standard de C não define [tt]buffer[byte_inicial][tt] quando buffer é um ponteiro para void. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now