zoukankan      html  css  js  c++  java
  • 如何使用remove_copy_if() algorithm? (C/C++) (STL)

    copy() algorithm是很好用的algorithm,但偏偏就是沒有copy_if(),但透過remove_copy_if()則可達到相同的要求。

    remove_copy_if()的思考方式和copy_if()相反,若UnaryPredicate為true,則不copy,若為false,則copy。

    此範例demo若為remove_copy_if() algorithm,先輸出奇數,再輸出偶數。

     1/* 
     2(C) OOMusou 2006 http://oomusou.cnblogs.com
     3
     4Filename    : GenericAlgo_remove_copy_if.cpp
     5Compiler    : Visual C++ 8.0 / ISO C++
     6Description : Demo how to use remove_copy_if() algorithm
     7Release     : 11/12/2006 1.0
     8*/

     9
    10#include <iostream>
    11#include <algorithm>
    12#include <vector>
    13
    14using namespace std;
    15
    16bool isOdd(int);
    17bool isEven(int);
    18
    19int main() {
    20  vector<int> ivec;
    21  copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(ivec));
    22
    23  remove_copy_if(ivec.begin(), ivec.end(), ostream_iterator<int>(cout, " "), isEven);
    24  cout << endl;
    25  remove_copy_if(ivec.begin(), ivec.end(), ostream_iterator<int>(cout," "), isOdd);
    26
    27  return 0;
    28}

    29
    30bool isOdd(int val) {
    31  return val%2;
    32}

    33
    34bool isEven(int val) {
    35  return !(val%2);
    36}


    執行結果

    11 2 3 4 5 6
    2^Z
    31 3 5
    42 4 6 請按任意鍵繼續 . . .
  • 相关阅读:
    第6章 LVM详解
    第5章 Linux上管理文件系统
    第4章 ext文件系统机制原理剖析
    第3章 Linux上文件的权限管理
    第2章 系统用户/组管理(2) su和sudo
    第2章 细说Linux系统用户/组管理(1)
    cpio用法详细说明
    Linux find运行机制详解
    第1章 Linux文件类基础命令
    PXE+kickstart无人值守安装CentOS 6
  • 原文地址:https://www.cnblogs.com/lzjsky/p/1862789.html
Copyright © 2011-2022 走看看