Ir para o conteúdo
Joao brandao

Duvida na existencia de uma função

Mensagens Recomendadas

Joao brandao    0
Joao brandao

Ola pessoal, sabem se existe uma funçao que apague a posiçao de um vector?

Exemplo:

Vector Inicial:

1 | 2 | 3 | 4 | 5

quero apagar a 2 casa(vector começa em 0)

Vector final:

1 | 2 | 4 | 5

-------------

Outra questao era saber como é que poderia passar um int para void

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

eu de essa ja tinha conhecimento e ate ja  a usei. Estava era a perguntar se existia outra maneira sem ser essa

Porque?

Copias, um a um, todos os elementos excepto o que queres apagar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Joao brandao    0
Joao brandao

isso eu sei fazer.. o que me interessa é saber se existia outra funçao.. a forma que disses te de copiar 1 a 1 mete o programa mais lento para aquilo que é :-S

mas obrigado na mesma pmg :thumbsup:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
xtrm0    1
xtrm0

De precisas que seja mais rápido que o desse do vetor, se calhar precisas de usar uma estrutura de dados diferente. Para que e que precisas?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

... precisas de usar uma estrutura de dados diferente ...

+1

Outra questao era saber como é que poderia passar um int para void

Para que? Porque? Nao facas isso!

Passar um int para void é pior que mete-lo a zero --- sugiro que metes a zero em vez de o passares para void.

int_a_passar_para_void = 0; // pronto

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Joao brandao    0
Joao brandao

Eu estava a fazer um exercicio da ONI( http://www.dcc.fc.up.pt/oni/problemas/2011/qualificacao/probA.html ) e uma das maneiras que queria fazer era usar aquela estrutura do vector(nao sei bem o nome daquilo; duas coisas muito simples que se metem é  #include <vector> e vector <int>nome_do_vector).

O exercicio basicamente era sempre que se lia uma energia ele entrava num if, fazia push_back e colocava no vector e depois disso usava a funçao qsort para ordenar o vector mas isto dizia que n dava devido a nao aquela situaçao de int para void :-S

so comecei a mexer em c++ e nestas funçoes a pouco :-S a falta de experiência faz me fazer perguntas estúpidas como esta..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

... usava a funçao qsort para ordenar o vector mas isto dizia que n dava devido a nao aquela situaçao de int para void :-S

Ah! Não é de int para void! É de int* para void*: há uma diferença enorme :thumbsup:

Mas para ordenares em C++ usa std::sort() em vez de qsort().

a falta de experiência faz me fazer perguntas estúpidas como esta..

Nao ha perguntas estupidas quando se esta a aprender; todos nós passamos por isso.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mogers    14
mogers

Hint: ordenar n vai ajudar mt messe problema. Ja conheces a notacao O() ? Ajuda para explicar o porque. Nao sei se tens seguido a usaco...

Edit: a stl tem uma classe priority_queue

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
xtrm0    1
xtrm0

Tens de ver uma coisa nesse problema, precisas de uma estrutura de dados que te permita realizar pelo menos 3 operacoes:

min() -> apaga e retorna o minimo

max() -> apaga e retorna o maximo

insert() -> insere um valor

Podes por exemplo usar uma heap(http://en.wikipedia.org/wiki/Binary_heap). Com uma pequena modificacao, podes fazer insercoes em O(log N) e remocoes em O(log N), sendo N o numero de bakugans na colecao.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JoaoSantos95    0
JoaoSantos95

Eu usei o priority_queue e deu 100 pontos, tens é de ter atenção a uma coisa no final (caso contrário dá 96 e não 100) mas isso não vou dizer, vais ter de chegar lá (não é difícil de reparar)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mogers    14
mogers

Eu sugiro que não se fiem apenas na info da wikipedia, mas penso que essa página sobre binomial_heaps é um bom ponto de partida.

A classe priority_queue é algo limitada (suporta as operações descritas nessa *edit:*página*), especialmente se inserirem dados cuja prioridade pode mudar - operação increase/decrease key  (algo normal em alguns algoritmos de grafos por exemplo).

O ideal era irem vendo algumas coisas no Introduction to Algorithms. Reconheço que é um livro um pouco pesado para nós, em que a nossa educação não nos dá tantas bases como noutros países. Mas podem ir tirando dúvidas no forum ou procurar outros recursos mais "leves" (como a usaco).

Assim numa pesquisa rápida vi este ppt que me parece bom sobre o assunto (que se baseia no livro que referi: CLRS são as iniciais dos autores do Introduction to Algorithms) - www.cs.princeton.edu/~wayne/cs423/lectures/heaps.ppt

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade