Um programador pode escrever sua própria função (). No entanto, é provável que a função Sort () da biblioteca do algoritmo tenha um desempenho melhor do que o que o programador comum escreve.
A função stor () pode classificar os valores de um vetor em ordem ascendente ou em ordem decrescente. Para classificar um vetor, a biblioteca de algoritmo deve ser incluída. A biblioteca vetorial também deve ser incluída. O início do programa deve ser algo como:
#incluirO vetor é na verdade uma classe, a partir da qual os objetos vetoriais podem ser criados. Com a seção superior acima do programa, um vetor a ser classificado pode ser criado da seguinte maneira:
vetorO nome da classe é um vetor. O nome do objeto instanciado é VTR.
Neste tutorial, a codificação de classificação é feita na função C ++ Main (). Este tutorial explica como classificar um vetor C ++ usando o vetor acima, VTR.
Conteúdo do artigo
Classificação padrão
Classificações de classificação padrão em ordem crescente. A sintaxe para isso é:
modeloClassificando todo o vetor
O código a seguir classifica todo o vetor:
classificar (vtr.BEGIN (), VTR.fim());A lista classificada é:
A, B, C, D, M, N, S, V, X, Z, Z,qual é correto. Se a classificação não estiver correta, então a falha é a do programador e não a da função Sort ().
O RandomAccessIterator é intrínseco. vtr.BEGIN () retorna um iterador que aponta para o primeiro elemento e VTR.end () retorna outro iterador do mesmo tipo que aponta logo após o último elemento. Portanto, não há necessidade de instanciar um vetor indicando, RandomAccessIterator. Dessa forma, toda a lista é classificada.
Classificando um intervalo em ordem crescente
A lista não classificada acima tem dez elementos com índices:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9Para classificar apenas os elementos da posição 4, que é o índice, 3 = 4 - 1, para a posição 9, que é índice, 8 = 9 - 1, adicione 3 ao VTR.comece () para ter o primeiro iterador e depois adicione 8 ao VTR.comece () para ter o último iterador, para a função Sort (). O 9º O elemento do índice 8 não será incluído na classificação. Isto é, o último elemento indicado na faixa escolhido, é excluído para classificar. O código a seguir ilustra o seguinte:
classificar (vtr.BEGIN () + 3, VTR.begin () + 8);Os elementos nas posições 4, 5, 6, 7, 8 foram classificados. O elemento no 9º a posição não foi incluída no tipo. Essas posições correspondem aos índices 3, 4, 5, 6, 7. O elemento no índice 8 não foi incluído no tipo.
Então, para classificar um intervalo, identifique o primeiro e o último elementos do intervalo, não necessariamente de toda a lista. Adicione o índice do primeiro elemento ao iterador Begin (). Adicione o índice do último elemento, ainda ao iterador Begin (). Lembre -se de que o último elemento para o intervalo não será incluído no tipo, mas o primeiro elemento para o intervalo será incluído.
Adicionar um índice a um iterador é possível porque adicionar um número é o mesmo que incrementar o iterador o mesmo número de vezes. Incrementar um iterador uma vez faz isso para o próximo elemento.
Classificação em ordem decrescente
A sintaxe é:
modeloIsso difere da sintaxe acima com a presença de "compare comp". Comp é um ponteiro de função ou um objeto de função. Comp realmente decide se a classificação deve estar ascendente ou descendente. Sua ausência é o caso padrão, que significa descer.
Classificando toda a lista em ordem decrescente
O código a seguir classifica todo o vetor acima em ordem decrescente:
classificar (vtr.BEGIN (), VTR.end (), maiorO vetor classificado em ordem decrescente é:
Z, X, V, S, N, M, D, C, B, A,Observe o uso de "maior ()" no lugar de comp.
O oposto de maior () é menor (), que é o padrão (ascendente) e não precisa ser digitado.
Classificando um alcance em ordem decrescente
Um intervalo pode ser classificado em ordem decrescente, bem como em ordem crescente. O código a seguir classifica os 4º para o 9º elemento sem incluir o 9º elemento; e descendo.
classificar (vtr.BEGIN () + 3, VTR.begin () + 8, maiorO vetor com seu alcance escolhido, classificado em ordem decrescente, é:
Z, X, C, V, N, M, B, A, S, D,Função de comparação personalizada
O programa a seguir possui função de comparação personalizada para classificar ascendentes:
#incluirA função de fazer a comparação é chamada de comparação. Ele retorna um bool. Possui dois parâmetros, A e B, do mesmo tipo, como o tipo de elemento vetorial. Ele retorna verdadeiro se a for menor que B e Falso, caso contrário. O nome desta função é o terceiro argumento da chamada de função sort (). Neste programa, comparar é o mesmo que menos (). Alguns outros nomes em vez de comparar podem ser usados.
A lista não classificada é:
Z, X, C, V, B, N, M, A, S, DA lista classificada é:
A, B, C, D, M, N, S, V, X, Z, Z,Claro que a função de comparação personalizada pode ser usada para um intervalo. O programa a seguir ilustra o seguinte:
#incluirA lista não classificada é:
Z, X, C, V, B, N, M, A, S, DA lista classificada é:
Z, X, C, A, B, M, N, V, S, D,A função de comparação pode ser codificada para descer. O programa a seguir ilustra o seguinte:
#incluirBasta mudar (um b).
A lista não classificada é:
Z, X, C, V, B, N, M, A, S, DA lista classificada é:
Z, X, V, S, N, M, D, C, B, A,A função de comparação personalizada pode ser usada para um intervalo, em ordem decrescente. O programa a seguir ilustra o seguinte:
#incluirA lista não classificada é:
Z, X, C, V, B, N, M, A, S, DO vetor com seu alcance escolhido, classificado em ordem decrescente, é:
Z, X, C, V, N, M, B, A, S, D,Outros tipos de dados
Outros tipos de dados podem ser classificados usando seus tipos. Por exemplo, se o tipo de dados int for classificado, “int” seria usado para criar o vetor e na função de comparação incorporada ou personalizada. Se o tipo de dados estiver em uma biblioteca, o cabeçalho da biblioteca deverá ser incluído no programa, como no caso da string abaixo:
#incluirA lista não classificada é:
Ze, xe, ce, ve, be, ne, me, ae, se, deA lista classificada é:
Ze, xe, ve, se, ne, me, de, ce, be, ae,Conclusão
C ++ vem com a biblioteca de algoritmo que tem uma função de classificação (). Esta função leva dois ou três argumentos em seu uso normal. O primeiro argumento é em que a lista vetorial, o tipo deve começar. O segundo argumento é onde a lista vetorial, o tipo deve terminar. O terceiro argumento determina se a classificação deve ser feita em ordem crescente ou em ordem decrescente.