Entrar

Como usar o remove_copy_if, iniciar, finalizar e bind2nd STL funções no Visual C++

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

156534
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
O código de exemplo abaixo ilustra como usar o remove_copy_if, iniciar, finalizar e bind2nd STL funções no Visual C++.
Mais Informações

Cabeçalho necessário

    <algorithm>				

Protótipo

   template<class ForwardIterator, class OutputIterator, class Predicate>       inline OutputIterator remove_copy_if(ForwardIterator first,                              ForwardIterator last,                              OutputIterator result,                              Predicate pred)				
Observação Os nomes de classe/parâmetro no protótipo não coincidem com a versão no arquivo de cabeçalho. Alguns foram modificados para melhorar a legibilidade.

Descrição

O algoritmo remove_copy_if copia todos os elementos do intervalo (primeiro, último) para o intervalo começando resultado, ignorando qualquer elemento que faz com que o predicado retornar true. Ele retorna um iterador posicionado imediatamente após o último elemento novo.

Código de exemplo

Observação A primeira linha a seção de código de exemplo diz:
/ / Compilar opções necessárias: /GX
No VC ++. NET, /EHsc é definida por padrão e é equivalente a /GX.
////////////////////////////////////////////////////////////////////// // // Compile options needed: /GX// // remove_copy_if.cpp : Illustrates how to use the remove_copy_if function.// // Functions:// //   remove_copy_if - copy the elements of a sequence to another sequence//                    eliminating any elements that satisfy a predicate.//   bind2nd - Returns true for elements for which the condition is true//   begin - Returns an iterator that points to the first element in a//           sequence//   end - Returns an iterator that points one past the end of a sequence// // Written by Kalindi Sanghrajka// of Microsoft Product Support Services,// Software Core Developer Support.// Copyright (c) 1996 Microsoft Corporation. All rights reserved.////////////////////////////////////////////////////////////////////// // disable warning C4786: symbol greater than 255 character,// okay to ignore#pragma warning(disable: 4786)// disable warning C4244: possible loss of data,// okay to ignore#pragma warning(disable: 4244)#include <iostream>#include <vector>#include <algorithm>#include <functional>#if _MSC_VER > 1020   // if VC++ version is > 4.2   using namespace std;  // std c++ libs implemented in std   #endifvoid main(){    const int MAX_ELEMENTS = 8 ;    // Define a template class vector of integers    typedef vector<int, allocator<int> > IntVector ;    //Define an iterator for template class vector of integer    typedef IntVector::iterator IntVectorIt ;    //vector containing numbers    IntVector Numbers(MAX_ELEMENTS), Result(MAX_ELEMENTS) ;    IntVectorIt start, end, it, last, resultIt ;    //Initialize vector Numbers    Numbers[0] = 10 ;    Numbers[1] = 20 ;    Numbers[2] = 10 ;    Numbers[3] = 15 ;    Numbers[4] = 12 ;    Numbers[5] = 25 ;    Numbers[6] = 30 ;    Numbers[7] = 10 ;    start = Numbers.begin() ;   // location of first                                // element of Numbers    end = Numbers.end() ;       // one past the location                                // last element of Numbers    resultIt = Result.begin() ; // location of first                                // element of Result    // print content of Numbers    cout << "Numbers { " ;    for(it = start; it != end; it++)        cout << *it << " " ;    cout << " }\n" << endl ;    // copy all elements from Numbers to Result    // skipping any item that >= 25    last = remove_copy_if(start, end, resultIt,                          bind2nd(greater_equal<int>(), 25)) ;    //print number of elements copied to Result    cout << "Total number of elements copied to Result = "        << last - resultIt << endl ;    start = Result.begin() ;   // location of first                                // element of Result    end = Result.end() ;       // one past the location                               // last element of Result    // print content of Result    cout << "Result { " ;    for(it = start; it != end; it++)        cout << *it << " " ;    cout << " }\n" << endl ;}				
a saída de programa está:
Numbers { 10 20 10 15 12 25 30 10  }Total number of elements copied to Result = 6Result { 10 20 10 15 12 10 0 0  }				
Referências
Para as mesmas informações sobre remove_copy_if, começar, final e bind2nd, visite o seguinte site da MSDN:
http://msdn.microsoft.com/en-us/library/bke28kf2.aspx
STL STLSample remove_copy_if bind2nd começar final

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 156534 - Última Revisão: 01/09/2015 05:57:49 - Revisão: 6.1

  • The Standard C++ Library
  • kbnosurvey kbarchive kbmt kbhowto kbcode kbinfo KB156534 KbMtpt
Comentários