Skip to content

Latest commit

 

History

History
68 lines (50 loc) · 1.43 KB

remove_copy.md

File metadata and controls

68 lines (50 loc) · 1.43 KB

#remove_copy

namespace std {
  template <class InputIterator, class OutputIterator, class T>
  OutputIterator remove_copy(InputIterator first, InputIterator last,
                             OutputIterator result, const T& value);
}

###概要 指定された要素を除け、その結果を出力の範囲へコピーする。

###要件 [first,last)[result,result + (last - first) は重なってはならない。 *result = *first という式が有効でなければならない。

###効果 [first,last) 内にあるイテレータ i について、*i == value でない要素を result へコピーする

###戻り値 実行結果の範囲の終端を返す

###計算量 正確に last - first 回の比較を行う

###注意 安定。

###実装例

template <class InputIterator, class OutputIterator, class T>
OutputIterator remove_copy(InputIterator first, InputIterator last,
                           OutputIterator result, const T& value) {
  for ( ; first != last; ++first)
    if (!(*first == value))
      *result++ = *first;
  return result;
}

###使用例

#include <algorithm>
#include <iostream>
#include <vector>
#include <iterator>
 
int main() {
  std::vector<int> v = { 2,3,1,2,1 };

  // 1 を除去した結果を出力する
  std::remove_copy(v.begin(), v.end(),
    std::ostream_iterator<int>(std::cout, ","), 1);
}
  • remove_copy[color ff0000]

###出力

2,3,2,