簡単なプログラム解釈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つのプロトタイプがある.
関数のプロトタイプ:
サンプル・プログラム:
vectorベクトルコンテナv 1={5,8,1,4}にサブシーケンスコンテナベクトルV 2={8,1}が含まれているか否かを検索し、検索結果「v 2の要素はv 1に含まれ、開始要素は:v 1[1]」を印刷する
*******************************************************************************************************************************
C++経典書目索引及び資源ダウンロード:http://blog.csdn.net/jerryjbiao/article/details/7358796
********************************************************************************************************************************
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
********************************************************************************************************************************