簡単なプログラム解釈C++STLアルゴリズムシリーズの10:search


C++STLの非可変アルゴリズム(Non-mutating algorithms)は、操作データを破壊しないテンプレート関数のセットであり、シーケンスデータの個々の処理、要素検索、サブシーケンス検索、統計、マッチングを行うために使用される.
searchアルゴリズム関数は、あるシーケンスで別のシーケンスと一致するサブシーケンスを検索します.反復器区間[first 1,last 1)で反復器区間[first 2,last 2]を探して完全に一致する(または二元述語binary_predを満たす)サブシーケンス、戻りサブシーケンスの最初の要素が[first 1,last 1)区間の反復器値、または戻りlast 1は一致しないサブシーケンスを表す2つのプロトタイプがある.
関数のプロトタイプ:
template<class ForwardIterator1, class ForwardIterator2>
   ForwardIterator1 search(
      ForwardIterator1 _First1, 
      ForwardIterator1 _Last1,
      ForwardIterator2 _First2, 
      ForwardIterator2 _Last2
   );
template<class ForwardIterator1, class ForwardIterator2, class Pr>
   ForwardIterator1 search(
      ForwardIterator1 _First1, 
      ForwardIterator1 _Last1,
      ForwardIterator2 _First2, 
      ForwardIterator2 _Last2
      BinaryPredicate _Comp
   );
 

サンプル・プログラム:
vectorベクトルコンテナv 1={5,8,1,4}にサブシーケンスコンテナベクトルV 2={8,1}が含まれているか否かを検索し、検索結果「v 2の要素はv 1に含まれ、開始要素は:v 1[1]」を印刷する
/*******************************************************************
 * Copyright (C) Jerry Jiang            
 * File Name   : search.cpp
 * Author      : Jerry Jiang
 * Create Time : 2011-10-10 23:22:34
 * Mail        : [email protected]
 * Blog        : http://blog.csdn.net/jerryjbiao 
 * Description :         C++ STL                     
 *                      :      search               
 ******************************************************************/

#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;

int main()
{
	vector<int> v1;
	v1.push_back(5);
	v1.push_back(8);
	v1.push_back(1);
	v1.push_back(4);

	vector<int> v2;
	v2.push_back(8);
	v2.push_back(1);

	vector<int>::iterator iterLocation;
	iterLocation = search(v1.begin(), v1.end(), v2.begin(), v2.end());

	if (iterLocation != v1.end())
	{
		cout << "v2      v1   ,     "
			 << "v1[" << iterLocation - v1.begin() << "]" <<endl;
	} 
	else
	{
		cout << "v2       v1  " << endl;
	}
	return 0;
}

*******************************************************************************************************************************
C++経典書目索引及び資源ダウンロード:http://blog.csdn.net/jerryjbiao/article/details/7358796
********************************************************************************************************************************