Existe uma função de vetor embutida no C ++ para reverter um vetor no lugar?
Ou você apenas precisa fazer isso manualmente?
Há uma função std::reverse
no algorithm
cabeçalho para esse fim.
#include <vector>
#include <algorithm>
int main() {
std::vector<int> a;
std::reverse(a.begin(), a.end());
return 0;
}
Todos os contêineres oferecem uma visão invertida de seu conteúdo com
rbegin()
erend()
. Essas duas funções retornam os chamados iteradores reversos , que podem ser usados como normais, mas parecerá que o contêiner está realmente invertido.Exemplo ao vivo no Ideone . Resultado:
fonte
std::sort
precisaria de um vetor de 1000 elementos, se precisar apenas dos 10 primeiros em ordem não especificada, porque é mais elegante do questd::partition
? Esta é a escola de pensamento que paralisa minha experiência com o PC hoje, como aconteceu há 15 anos, com a diferença de que ainda são desperdiçados mais ciclos, bilhões deles.print_range
não está correto: não funcionará quando o intervalo vazio for ultrapassado.std::reverse(a.rbegin(), a.rend())
? ; ^)Você pode usar
std::reverse
assimfonte
Você também pode usar em
std::list
vez destd::vector
.list
possui uma função interna list :: reverse para reverter elementos.fonte
Freqüentemente, o motivo pelo qual você deseja reverter o vetor é porque você o preenche pressionando todos os itens no final, mas realmente os recebe na ordem inversa. Nesse caso, você pode inverter o contêiner usando um
deque
botão e empurrando-o diretamente na frente. (Ouvector::insert()
, em vez disso, você pode inserir os itens na frente , mas isso seria lento quando houver muitos itens, pois é necessário embaralhar todos os outros itens para cada inserção.) Portanto, ao contrário de:Você pode fazer:
fonte
fonte