ホーム | ブログ | C++辞典 | サイトマップ | FAQ | 掲示板 | リンク集
メイン・メニュー
インデックス
プログラミング
その他
<algorithm>ヘッダ/25.1更新を伴わない列演算 のバックアップの現在との差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
 #navi(<algorithm>ヘッダ)
 
 **更新を伴わない列演算 (non-modifying sequence operations) [#v0e4df4a]
 
 
 &aname(for_each);
 ***for_each [#u090a93a]
 各要素に対する処理
 
 ''形式''~
 &nbsp; template<class InputIterator, class Funtion>~
 &nbsp;&nbsp;&nbsp;&nbsp;Function [[''for_each''>#for_each]](InputIterator '''first''', InputIterator '''last''', Function '''f''');~
 namespace std {~
 &nbsp; template<class [[InputIterator>反復子#input]], class Funtion>~
 &nbsp; &nbsp; Function ''for_each''([[InputIterator>反復子#input]] '''first''', [[InputIterator>反復子#input]] '''last''', Function '''f''');~
 }~
 
 ''[[引数]]''~
   '''first''':  先頭要素を指す InputIterator~
   '''last''':  終端要素の次を指す InputIterator~
   '''first''':  先頭要素を指す [[InputIterator>反復子#input]]~
   '''last''':  終端要素の次を指す [[InputIterator>反復子#input]]~
   '''f''':  各要素に適用する処理~
 
 ''[[返却値]]''~
  '''f''' を返す。
 
 ''解説''~
  区間 ['''first''', '''last'''-1) の各[[反復子]] '''iter''' に対して、'''f'''(*'''iter''') を実行する。'''f''' が何らかの[[返却値]]を返す場合には、その値は単に無視される。
 
 ''計算量''~
  '''f''' がちょうど '''last''' - '''first''' 回適用される。
 
 
 &aname(find);
 ***find [#rc9a4e7b]
 [[値]]の探索
 
 ''形式''~
 &nbsp; template<class InputIterator, class T>~
 &nbsp;&nbsp;&nbsp;&nbsp;InputIterator [[''find''>#find]](InputIterator '''first''', InputIterator '''last''', const T& '''value''');~
 namespace std {~
 &nbsp; template<class [[InputIterator>反復子#input]], class T>~
 &nbsp; &nbsp; [[InputIterator>反復子#input]] ''find''([[InputIterator>反復子#input]] '''first''', [[InputIterator>反復子#input]] '''last''', const T& '''value''');~
 }~
 
 ''[[引数]]''~
   '''first''':  先頭要素を指す InputIterator~
   '''last''':  終端要素の次を指す InputIterator~
   '''first''':  先頭要素を指す [[InputIterator>反復子#input]]~
   '''last''':  終端要素の次を指す [[InputIterator>反復子#input]]~
   '''value''':  探索対象の[[値]]。型 T は EqualityComparable~
 
 ''[[返却値]]''~
  探査に成功すれば検出位置を指す[[反復子]]を、失敗した場合は '''last''' を返す。
 
 ''解説''~
  区間 ['''first''', '''last''') の[[反復子]] '''iter''' であり、かつ *'''iter''' == '''value''' となる最初の要素を探索する。
 
 ''計算量''~
  *'''iter''' == '''value''' の評価を、多くとも '''last''' - '''first''' 回実行する。
 
 ''参照''~
 → [[find_if>#find_if]]
 
 &aname(find_if);
 ***find_if [#i228852d]
 条件に一致する要素の探索
 
 ''形式''~
 &nbsp; template<class InputIterator, class Predicate>~
 &nbsp;&nbsp;&nbsp;&nbsp;InputIterator [[''find_if''>#find_if]](InputIterator '''first''', InputIterator '''last''', Predicate '''pred''');~
 namespace std {~
 &nbsp; template<class [[InputIterator>反復子#input]], class Predicate>~
 &nbsp; &nbsp; [[InputIterator>反復子#input]] ''find_if''([[InputIterator>反復子#input]] '''first''', [[InputIterator>反復子#input]] '''last''', Predicate '''pred''');~
 }~
 
 ''[[引数]]''~
   '''first''':  先頭要素を指す InputIterator~
   '''last''':  終端要素の次を指す InputIterator~
   '''first''':  先頭要素を指す [[InputIterator>反復子#input]]~
   '''last''':  終端要素の次を指す [[InputIterator>反復子#input]]~
   '''pred''':  探索条件となる[[述語]]~
 
 ''[[返却値]]''~
  探査に成功すれば検出位置を指す[[反復子]]を、失敗した場合は '''last''' を返す。
 
 ''解説''~
  区間 ['''first''', '''last''') の[[反復子]] '''iter''' であり、かつ '''pred'''('''iter''') != false となる最初の要素を探索する。
 
 ''計算量''~
  [[述語]]の適応を、多くとも '''last''' - '''first''' 回実行する。
 
 ''参照''~
 → [[find>#find]]
 
 &aname(find_end);
 ***find_end [#kb9c8797]
 最後の部分列の探索
 
 ''形式''~
 &nbsp; template<class [[ForwardIterator1>ForwardIterator]], class [[ForwardIterator2>ForwardIterator]]>~
 &nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator1 [[''find_end''>#find_end]](ForwardIterator1 '''first1''', ForwardIterator1 '''last1''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator2 '''first2''', ForwardIterator2 '''last2''');~
 namespace std {~
 &nbsp; template<class [[ForwardIterator1>反復子#forward]], class [[ForwardIterator2>反復子#forward]]>~
 &nbsp; &nbsp; [[ForwardIterator1>反復子#forward]] ''find_end''([[ForwardIterator1>反復子#forward]] '''first1''', [[ForwardIterator1>反復子#forward]] '''last1''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [[ForwardIterator2>反復子#forward]] '''first2''', [[ForwardIterator2>反復子#forward]] '''last2''');~
 
 &nbsp; template<class [[ForwardIterator1>ForwardIterator]], class [[ForwardIterator2>ForwardIterator]], ckass BinaryPredicate>~
 &nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator1 [[''find_end''>#find_end]](ForwardIterator1 '''first1''', ForwardIterator1 '''last1''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator2 '''first2''', ForwardIterator2 '''last2''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryPredicate '''pred''');~
 &nbsp; template<class [[ForwardIterator1>反復子#forward]], class [[ForwardIterator2>反復子#forward]], ckass BinaryPredicate>~
 &nbsp; &nbsp; [[ForwardIterator1>反復子#forward]] ''find_end''([[ForwardIterator1>反復子#forward]] '''first1''', [[ForwardIterator1>反復子#forward]] '''last1''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [[ForwardIterator2>反復子#forward]] '''first2''', [[ForwardIterator2>反復子#forward]] '''last2''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BinaryPredicate '''pred''');~
 }~
 
 ''[[引数]]''~
   '''first1''':  探索対象となる列の先頭要素を指す ForwardIterator~
   '''last1''':  探索対象となる列の終端要素の次を指す ForwardIterator~
   '''first2''':  探索する部分列の先頭要素を指す ForwardIterator~
   '''last2''':  探索する部分列の終端要素の次を指す ForwardIterator~
   '''first1''':  探索対象となる列の先頭要素を指す [[ForwardIterator>反復子#forward]]~
   '''last1''':  探索対象となる列の終端要素の次を指す [[ForwardIterator>反復子#forward]]~
   '''first2''':  探索する部分列の先頭要素を指す [[ForwardIterator>反復子#forward]]~
   '''last2''':  探索する部分列の終端要素の次を指す [[ForwardIterator>反復子#forward]]~
   '''pred''':  [[述語]]~
 
 ''[[返却値]]''~
  探索に成功した場合、見つけた部分列の先頭要素を指す[[反復子]]を返す。失敗した場合には '''last1''' を返す。
 
 ''解説''~
  区間 ['''first1''', '''last1''' - ('''last2''' - '''first2''')) で定義される列から区間 ['''first2''', '''last2''') で定義される最後の部分列を探索する。具体的には、区間 ['''first1''', '''last1''' - ('''last2''' - '''first2''')) にある[[反復子]] '''iter''' および '''n''' < '''last2''' - '''first2''' である負でない '''n''' に対して、最初の形式では *('''iter''' + '''n''') == *('''first2''' + '''n''') が、2 番目の形式では '''pred'''(*('''iter''' + '''n'''), *('''first2''' + '''n''')) != false が成立する最後の '''iter''' を見つけ出す。
 
 ''計算量''~
  多くとも ('''last2''' - '''first2''')×('''last1''' - '''first1''' - ('''last2''' - '''first2''') + 1) 回比較または述語が適用が行われる。
 
 ''参照''~
 → [[serach>#search]]
 
 &aname(find_first_of);
 ***find_first_of [#rb4923d6]
 値集合のひとつに一致する要素の探索
 
 ''形式''~
 &nbsp; template<class [[ForwardIterator1>ForwardIterator]], class [[ForwardIterator2>ForwardIterator]]>~
 &nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator1 [[''find_first_of''>#find_first_of]](ForwardIterator1 '''first1''', ForwardIterator1 '''last1''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator2 '''first2''', ForwardIterator2 '''last2''');~
 namespace std {~
 &nbsp; template<class [[ForwardIterator1>反復子#forward]], class [[ForwardIterator2>反復子#forward]]>~
 &nbsp; &nbsp; [[ForwardIterator1>反復子#forward]] ''find_first_of''([[ForwardIterator1>反復子#forward]] '''first1''', [[ForwardIterator1>反復子#forward]] '''last1''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [[ForwardIterator2>反復子#forward]] '''first2''', [[ForwardIterator2>反復子#forward]] '''last2''');~
 
 &nbsp; template<class [[ForwardIterator1>ForwardIterator]], class [[ForwardIterator2>ForwardIterator]], BinaryPredicate pred>~
 &nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator1 [[''find_first_of''>#find_first_of]](ForwardIterator1 '''first1''', ForwardIterator1 '''last1''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator2 '''first2''', ForwardIterator2 '''last2''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryPredicate '''pred''');~
 &nbsp; template<class [[ForwardIterator1>反復子#forward]], class [[ForwardIterator2>反復子#forward]], BinaryPredicate pred>~
 &nbsp; &nbsp; [[ForwardIterator1>反復子#forward]] ''find_first_of''([[ForwardIterator1>反復子#forward]] '''first1''', [[ForwardIterator1>反復子#forward]] '''last1''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [[ForwardIterator2>反復子#forward]] '''first2''', [[ForwardIterator2>反復子#forward]] '''last2''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BinaryPredicate '''pred''');~
 }~
 
 ''[[引数]]''~
   '''first1''':  探索対象となる列の先頭要素を指す ForwardIterator~
   '''last1''':  探索対象となる列の終端要素の次を指す ForwardIterator~
   '''first2''':  値集合の先頭要素を指す ForwardIterator~
   '''last2''':  値集合の終端要素の次を指す ForwardIterator~
   '''first1''':  探索対象となる列の先頭要素を指す [[ForwardIterator>反復子#forward]]~
   '''last1''':  探索対象となる列の終端要素の次を指す [[ForwardIterator>反復子#forward]]~
   '''first2''':  値集合の先頭要素を指す [[ForwardIterator>反復子#forward]]~
   '''last2''':  値集合の終端要素の次を指す [[ForwardIterator>反復子#forward]]~
   '''pred''':  [[述語]]~
 
 ''[[返却値]]''~
  値集合のひとつに一致する要素が見つかった場合には、その要素を指す[[反復子]]を返す。それ以外の場合には '''last1''' を返す。
 
 ''解説''~
  区間 ['''first1''', '''last1''') で定義される列から、区間 ['''first2''', '''last2''') で定義される値集合のひとつに一致する要素を探索する。具体的には、区間 ['''first1''', '''last1''') にある[[反復子]] '''iter1''' 
 および区間 ['''first2''', '''last2''') にある反復子 '''iter2''' に対して、最初の形式では *'''iter1''' == *'''iter2''' が、2 番目の形式では '''pred'''(*'''iter1''', *'''iter2''') != false が成立する最初の '''iter1''' を見つける。
 
 ''計算量''~
  多くとも ('''last1''' - '''first1''')×('''last2''' - '''first2''') 回比較または述語の適用が行われる。
 
 &aname(adjacent_find);
 ***adjacent_find [#t89f9836]
 隣接する同値要素の探索
 
 ''形式''~
 &nbsp; template<class ForwardIterator>~
 &nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator [[''adjacent_find''>#adjacent_find]](ForwardIterator '''first''', ForwardIterator '''last''');~
 namespace std {~
 &nbsp; template<class [[ForwardIterator>反復子#forward]]>~
 &nbsp; &nbsp; [[ForwardIterator>反復子#forward]] ''adjacent_find''([[ForwardIterator>反復子#forward]] '''first''', [[ForwardIterator>反復子#forward]] '''last''');~
 
 &nbsp; template<class ForwardIterator, class Predicate>~
 &nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator [[''adjacent_find''>#adjacent_find]](ForwardIterator '''first''', ForwardIterator '''last''',~ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Predicate '''pred''');~
 &nbsp; template<class [[ForwardIterator>反復子#forward]], class Predicate>~
 &nbsp; &nbsp; [[ForwardIterator>反復子#forward]] ''adjacent_find''([[ForwardIterator>反復子#forward]] '''first''', [[ForwardIterator>反復子#forward]] '''last''',~ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Predicate '''pred''');~
 }~
 
 ''[[引数]]''~
   '''first''':  探索対象となる列の先頭要素を指す ForwardIterator~
   '''last''':  探索対象となる列の終端要素の次を指す ForwardIterator~
   '''first''':  探索対象となる列の先頭要素を指す [[ForwardIterator>反復子#forward]]~
   '''last''':  探索対象となる列の終端要素の次を指す [[ForwardIterator>反復子#forward]]~
   '''pred''':  [[述語]]~
 
 ''[[返却値]]''~
  隣接する同値の要素が見つかった場合、その要素を指す[[反復子]]を、見つからなかった場合は '''last''' を返す。
 
 ''解説''~
  区間 ['''first''', '''last''') にある[[反復子]] '''iter''' および '''iter''' + 1 に対して、最初の形式では *'''iter''' == *('''iter''' + 1) が、2 番目の形式では '''pred'''(*'''iter''', *('''iter''' + 1)) が成立する最初の '''iter''' を見つける。
 
 ''計算量''~
  ちょうど [[find>#find]]('''find''', '''last''', '''value''') - '''first''' 回比較または述語の適用が行われる。
 
 &aname(count);
 ***count [#w6ea6c93]
 要素の個数
 
 ''形式''~
 &nbsp; template<class InputIterator, class T>~
 &nbsp;&nbsp;&nbsp;&nbsp;typename iterator_traits<InputIterator>::difference_type~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[''count''>#count]](InputIterator '''first''', InputIterator '''last''', const T& '''value''');~
 namespace std {~
 &nbsp; template<class [[InputIterator>反復子#input]], class T>~
 &nbsp; &nbsp; typename iterator_traits<[[InputIterator>反復子#input]]>::difference_type~
 &nbsp; &nbsp; &nbsp; &nbsp; ''count''([[InputIterator>反復子#input]] '''first''', [[InputIterator>反復子#input]] '''last''', const T& '''value''');~
 }~
 
 ''[[引数]]''~
   '''first''':  計数対象となる列の先頭要素を指す InputIterator~
   '''last''':  計数対象となる列の終端要素の次を指す InputIterator~
   '''first''':  計数対象となる列の先頭要素を指す [[InputIterator>反復子#input]]~
   '''last''':  計数対象となる列の終端要素の次を指す [[InputIterator>反復子#input]]~
   '''value''':  計数の対象となる値。型 T は EqualityComparable~
 
 ''[[返却値]]''~
  計数した個数を返す。
 
 ''解説''~
  区間 ['''first''', '''last''') にある[[反復子]] '''iter''' に対して、*'''iter''' == '''value''' が成立する反復子の個数を数える。
 
 ''計算量''~
  ちょうど '''last''' - '''first''' 回比較が行われる。
 
 ''参照''~
 → [[count_if>#count_if]]
 
 &aname(count_if);
 ***count_if [#ea7c8a8d]
 条件が成立する要素の個数
 
 ''形式''~
 &nbsp; template<class InputIterator, class Predicate>~
 &nbsp;&nbsp;&nbsp;&nbsp;typename iterator_traits<InputIterator>::difference_type~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[''count_if''>#count_if]](InputIterator '''first''', InputIterator '''last''', Predicate '''pred''');~
 namespace std {~
 &nbsp; template<class [[InputIterator>反復子#input]], class Predicate>~
 &nbsp; &nbsp; typename iterator_traits<[[InputIterator>反復子#input]]>::difference_type~
 &nbsp; &nbsp; &nbsp; &nbsp; ''count_if''([[InputIterator>反復子#input]] '''first''', [[InputIterator>反復子#input]] '''last''', Predicate '''pred''');~
 }~
 
 ''[[引数]]''~
   '''first''':  計数対象となる列の先頭要素を指す InputIterator~
   '''last''':  計数対象となる列の終端要素の次を指す InputIterator~
   '''first''':  計数対象となる列の先頭要素を指す [[InputIterator>反復子#input]]~
   '''last''':  計数対象となる列の終端要素の次を指す [[InputIterator>反復子#input]]~
   '''pred''':  [[述語]]~
 
 ''[[返却値]]''~
  計数した個数を返す。
 
 ''解説''~
  区間 ['''first''', '''last''') にある[[反復子]] '''iter''' に対して、'''pred'''(*'''iter''', '''value''') != false が成立する反復子の個数を数える。
 
 ''計算量''~
  ちょうど '''last''' - '''first''' 回述語が適用される。
 
 ''参照''~
 → [[count>#count]]
 
 &aname(mismatch);
 ***mismatch [#k04f1b1d]
 不一致要素の探索
 
 ''形式''~
 &nbsp; template<class [[InputIterator1>InputIterator]], class [[InputIterator2>InputIterator]]>~
 &nbsp;&nbsp;&nbsp;&nbsp;pair<InputIterator1, InputIterator2>~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[''mismatch''>#mismatch]](InputIterator1 '''first1''', InputIterator1 '''last1''', InputIterator2 '''first2''');~
 namespace std {~
 &nbsp; template<class [[InputIterator1>反復子#input]], class [[InputIterator2>反復子#input]]>~
 &nbsp; &nbsp; pair<[[InputIterator1>反復子#input]], [[InputIterator2>反復子#input]]>~
 &nbsp; &nbsp; &nbsp; &nbsp; ''mismatch''([[InputIterator1>反復子#input]] '''first1''', [[InputIterator1>反復子#input]] '''last1''', [[InputIterator2>反復子#input]] '''first2''');~
 
 &nbsp; template<class [[InputIterator1>InputIterator]], class [[InputIterator2>InputIterator]], class Predicate>~
 &nbsp;&nbsp;&nbsp;&nbsp;pair<InputIterator1, InputIterator2>~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[''mismatch''>#mismatch]](InputIterator1 '''first1''', InputIterator1 '''last1''', InputIterator2 '''first2''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Predicate '''pred''');~
 &nbsp; template<class [[InputIterator1>反復子#input]], class [[InputIterator2>反復子#input]], class Predicate>~
 &nbsp; &nbsp; pair<[[InputIterator1>反復子#input]], [[InputIterator2>反復子#input]]>~
 &nbsp; &nbsp; &nbsp; &nbsp; ''mismatch''([[InputIterator1>反復子#input]] '''first1''', [[InputIterator1>反復子#input]] '''last1''', [[InputIterator2>反復子#input]] '''first2''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Predicate '''pred''');~
 }~
 
 ''[[引数]]''~
   '''first1''':  比較対象となる一方の列の先頭要素を指す InputIterator~
   '''last1''':  比較対象となる一方の列の終端要素の次を指す InputIterator~
   '''first2''':  比較対象となる他方の列の先頭要素を指す InputIterator~
   '''first1''':  比較対象となる一方の列の先頭要素を指す [[InputIterator>反復子#input]]~
   '''last1''':  比較対象となる一方の列の終端要素の次を指す [[InputIterator>反復子#input]]~
   '''first2''':  比較対象となる他方の列の先頭要素を指す [[InputIterator>反復子#input]]~
   '''pred''':  [[述語]]~
 
 ''[[返却値]]''~
  不一致要素が見つかった場合、不一致要素を指す[[反復子]]の対を返す。不一致要素が見つからなければ それぞれの列の終端要素の次を指す反復子が格納される。
 
 ''解説''~
  区間 ['''first1''', '''last1''') で定義される列と区間 ['''first2''', '''first2''' + ('''last1''' - '''first1''')) の各要素を比較し、不一致要素を見つける。不一致要素が見つかった場合の[[返却値]]の .first は区間 ['''first1''', '''last1''') 側の、.second は区間 ['''first2''', '''first2''' + ('''last1''' - '''first1''')) 側の反復子が格納される。
 
 ''計算量''~
  多くとも '''last1''' - '''first1''' 回比較または述語の適用が行われる。
 
 &aname(equal);
 ***equal [#x81cf4bd]
 列の等価判定
 
 ''形式''~
 &nbsp; template<class [[InputIterator1>InputIterator]], class [[InputIterator2>InputIterator]]>~
 &nbsp;&nbsp;&nbsp;&nbsp;bool [[''equal''>#equal]](InputIterator1 '''first1''', InputIterator1 '''last1''', InputIterator2 '''first2''');~
 namespace std {~
 &nbsp; template<class [[InputIterator1>反復子#input]], class [[InputIterator2>反復子#input]]>~
 &nbsp; &nbsp; bool ''equal''([[InputIterator1>反復子#input]] '''first1''', [[InputIterator1>反復子#input]] '''last1''', [[InputIterator2>反復子#input]] '''first2''');~
 
 &nbsp; template<class [[InputIterator1>InputIterator]], class [[InputIterator2>InputIterator]], Predicate pred>~
 &nbsp;&nbsp;&nbsp;&nbsp;bool [[''equal''>#equal]](InputIterator1 '''first1''', InputIterator1 '''last1''', InputIterator2 '''first2''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Predicate '''pred''');~
 &nbsp; template<class [[InputIterator1>反復子#input]], class [[InputIterator2>反復子#input]], Predicate pred>~
 &nbsp; &nbsp; bool ''equal''([[InputIterator1>反復子#input]] '''first1''', [[InputIterator1>反復子#input]] '''last1''', [[InputIterator2>反復子#input]] '''first2''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Predicate '''pred''');~
 }~
 
 ''[[引数]]''~
   '''first1''':  比較対象となる一方の列の先頭要素を指す InputIterator~
   '''last1''':  比較対象となる一方の列の終端要素の次を指す InputIterator~
   '''first2''':  比較対象となる他方の列の先頭要素を指す InputIterator~
   '''first1''':  比較対象となる一方の列の先頭要素を指す [[InputIterator>反復子#input]]~
   '''last1''':  比較対象となる一方の列の終端要素の次を指す [[InputIterator>反復子#input]]~
   '''first2''':  比較対象となる他方の列の先頭要素を指す [[InputIterator>反復子#input]]~
   '''pred''':  [[述語]]
 
 ''[[返却値]]''~
  比較対象の 2 つの列が等価の場合は true を、そうでなければ false を返す。
 
 ''解説''~
  区間 ['''first1''', '''last1''') で定義される列と区間 ['''first2''', '''first2''' + ('''last1''' - '''first1''')) で定義される列の各要素を比較する。具体的には、区間 ['''first1''', '''last1''') にある[[反復子]] '''iter''' に対して、最初の形式の場合は *'''iter''' == *('''first2''' + ('''iter''' - '''first1''')) が、2 番目の形式の場合は '''pred'''(*'''iter''', *('''first2''' + ('''iter''' - '''first1'''))) が成立する場合に 2 つの列が等価であると判定される。
 
 ''計算量''~
  多くとも '''last1''' - '''first1''' 回比較または述語の適用が行われる。
 
 &aname(search);
 ***search [#t07772e4]
 部分列の探索
 
 ''形式''~
 &nbsp; template<class [[ForwardIterator1>ForwardIterator]], class [[ForwardIterator2>ForwardIterator]]>~
 &nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator1 [[''search''>#search]](ForwardIterator1 '''first1''', ForwardIterator1 '''last1''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator2 '''first2''', ForwardIterator2 '''last2''');~
 namespace std {~
 &nbsp; template<class [[ForwardIterator1>反復子#forward]], class [[ForwardIterator2>反復子#forward]]>~
 &nbsp; &nbsp; [[ForwardIterator1>反復子#forward]] ''search''([[ForwardIterator1>反復子#forward]] '''first1''', [[ForwardIterator1>反復子#forward]] '''last1''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [[ForwardIterator2>反復子#forward]] '''first2''', [[ForwardIterator2>反復子#forward]] '''last2''');~
 
 &nbsp; template<class [[ForwardIterator1>ForwardIterator]], class [[ForwardIterator2>ForwardIterator]], class BinaryPredicate>~
 &nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator1 [[''search''>#search]](ForwardIterator1 '''first1''', ForwardIterator1 '''last1''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator2 '''first2''', ForwardIterator2 '''last2''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryPredicate '''pred''');~
 &nbsp; template<class [[ForwardIterator1>反復子#forward]], class [[ForwardIterator2>反復子#forward]], class BinaryPredicate>~
 &nbsp; &nbsp; [[ForwardIterator1>反復子#forward]] ''search''([[ForwardIterator1>反復子#forward]] '''first1''', [[ForwardIterator1>反復子#forward]] '''last1''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ForwardIterator2 '''first2''', [[ForwardIterator2>反復子#forward]] '''last2''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [[BinaryPredicate>反復子#bidirectional]] '''pred''');~
 }~
 
 ''[[引数]]''~
   '''first1''':  探索対象となる列の先頭要素を指す ForwardIterator~
   '''last1''':  探索対象となる列の終端要素の次を指す ForwardIterator~
   '''first2''':  探索する部分列の先頭要素を指す ForwardIterator~
   '''last2''':  探索する部分列の終端要素の次を指す ForwardIterator~
   '''first1''':  探索対象となる列の先頭要素を指す [[ForwardIterator>反復子#forward]]~
   '''last1''':  探索対象となる列の終端要素の次を指す [[ForwardIterator>反復子#forward]]~
   '''first2''':  探索する部分列の先頭要素を指す [[ForwardIterator>反復子#forward]]~
   '''last2''':  探索する部分列の終端要素の次を指す [[ForwardIterator>反復子#forward]]~
   '''pred''':  [[述語]]~
 
 ''[[返却値]]''~
  探索に成功した場合、見つけた部分列の先頭要素を指す[[反復子]]を返す。失敗した場合には '''last1''' を返す。
 
 ''解説''~
  区間 ['''first1''', '''last1''' - ('''last2''' - '''first2''')) で定義される列から区間 ['''first2''', '''last2''') で定義される部分列を探索する。具体的には、区間 ['''first1''', '''last1''' - ('''last2''' - '''first2''')) にある[[反復子]] '''iter''' および '''n''' < '''last2''' - '''first2''' である負でない '''n''' に対して、最初の形式では *('''iter''' + '''n''') == *('''first2''' + '''n''') が、2 番目の形式では '''pred'''(*('''iter''' + '''n'''), *('''first2''' + '''n''')) != false が成立する最初の '''iter''' を見つけ出す。
 
 ''計算量''~
  多くとも ('''last1''' - '''first1''')×('''last2''' - '''first2''') 回比較または述語が適用が行われる。
 
 ''参照''~
 → [[serach_n>#search_n]], [[find_end>#find_end]]
 
 &aname(search_n);
 ***search_n [#q4ac7b3d]
 n 個の連続値からなる部分列の探索
 
 ''形式''~
 &nbsp; template<class ForwardIterator, class Size, class T>~
 &nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator [[''search_n''>#search_n]](ForwardIterator '''first''', ForwardIterator '''last''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Size '''count''', const T& '''value''');~
 namespace std {~
 &nbsp; template<class [[ForwardIterator>反復子#forward]], class Size, class T>~
 &nbsp; &nbsp; [[ForwardIterator>反復子#forward]] ''search_n''([[ForwardIterator>反復子#forward]] '''first''', [[ForwardIterator>反復子#forward]] '''last''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Size '''count''', const T& '''value''');~
 
 &nbsp; template<class ForwardIterator, class Size, class T, BinaryPredicate pred>~
 &nbsp;&nbsp;&nbsp;&nbsp;ForwardIterator [[''search_n''>#search_n]](ForwardIterator '''first''', ForwardIterator '''last''',~
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Size '''count''', const T& '''value''', BinaryPredicate '''pred''');~
 &nbsp; template<class [[ForwardIterator>反復子#forward]], class Size, class T, BinaryPredicate pred>~
 &nbsp; &nbsp; [[ForwardIterator>反復子#forward]] ''search_n''([[ForwardIterator>反復子#forward]] '''first''', [[ForwardIterator>反復子#forward]] '''last''',~
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Size '''count''', const T& '''value''', [[BinaryPredicate>反復子#bidirectional]] '''pred''');~
 }~
 
 ''[[引数]]''~
   '''first''':  探索対象となる列の先頭要素を指す ForwardIterator~
   '''last''':  探索対象となる列の終端要素の次を指す ForwardIterator~
   '''first''':  探索対象となる列の先頭要素を指す [[ForwardIterator>反復子#forward]]~
   '''last''':  探索対象となる列の終端要素の次を指す [[ForwardIterator>反復子#forward]]~
   '''count''':  探索する部分列の要素数~
   '''value''':  探索する部分列の要素の値~
   '''pred''':  [[述語]]~
 
 ''[[返却値]]''~
  探索に成功した場合、見つけた部分列の先頭要素を指す[[反復子]]を返す。失敗した場合には '''last1''' を返す。
 
 ''解説''~
  区間 ['''first''', '''last''' - '''count''') で定義される列から '''count''' 個の '''value''' からなる部分列を探索する。具体的には、区間 ['''first''', '''last''' - '''count''') にある[[反復子]] '''iter''' および '''n''' < '''count''' である負でない '''n''' に対して、最初の形式では *('''iter''' + '''n''') == '''value'''が、2 番目の形式では '''pred'''(*('''iter''' + '''n'''), '''value''') が成立する最初の '''iter''' を見つけ出す。
 
 ''計算量''~
  多くとも ('''last''' - '''first''')×'''count''' 回比較または述語が適用が行われる。
 
 ''参照''~
 → [[serach>#search]]

トップ   一覧 単語検索   ヘルプ   最終更新のRSS
 ホーム | プロフィール | メール | ログイン | 管理
Copyright © 2005-2009 by TAKAGI Nobuhisa