簡単なプログラム解釈C++STLアルゴリズムシリーズの12:find_end
3136 ワード
C++STLの非可変アルゴリズム(Non-mutating algorithms)は、操作データを破壊しないテンプレート関数のセットであり、シーケンスデータの個々の処理、要素検索、サブシーケンス検索、統計、マッチングを行うために使用される.
find_endアルゴリズムは、あるシーケンスの中で最後の別のシーケンスと一致するサブシーケンスを検索する.反復器区間[first 1,last 1)で反復器区間[first 2,last 2)要素と一致するサブシーケンスを検索し、最初の要素の反復器またはlast 1を返す2つの関数プロトタイプがある.
関数のプロトタイプ:
サンプル・プログラム:
*******************************************************************************************************************************
C++経典書目索引及び資源ダウンロード:http://blog.csdn.net/jerryjbiao/article/details/7358796
********************************************************************************************************************************
find_endアルゴリズムは、あるシーケンスの中で最後の別のシーケンスと一致するサブシーケンスを検索する.反復器区間[first 1,last 1)で反復器区間[first 2,last 2)要素と一致するサブシーケンスを検索し、最初の要素の反復器またはlast 1を返す2つの関数プロトタイプがある.
関数のプロトタイプ:
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 find_end(
ForwardIterator1 _First1,
ForwardIterator1 _Last1,
ForwardIterator2 _First2,
ForwardIterator2 _Last2
);
template<class ForwardIterator1, class ForwardIterator2, class Pr>
ForwardIterator1 find_end(
ForwardIterator1 _First1,
ForwardIterator1 _Last1,
ForwardIterator2 _First2,
ForwardIterator2 _Last2,
BinaryPredicate _Comp
);
サンプル・プログラム:
/*******************************************************************
* Copyright (C) Jerry Jiang
* File Name : find_end.cpp
* Author : Jerry Jiang
* Create Time : 2011-10-12 20:07:20
* Mail : [email protected]
* Blog : http://blog.csdn.net/jerryjbiao
* Description : C++ STL
* : find_end
******************************************************************/
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> v1;
v1.push_back(5);
v1.push_back(-2);
v1.push_back(4);
v1.push_back(3);
v1.push_back(-2);
v1.push_back(4);
v1.push_back(8);
v1.push_back(-2);
v1.push_back(4);
v1.push_back(9);
vector<int>::const_iterator iter;
cout << "v1: " ;
for (iter = v1.begin(); iter != v1.end(); ++iter)
{
cout << *iter << " ";
}
cout << endl;
vector<int> v2;
v2.push_back(-2);
v2.push_back(4);
cout << "v2: " ;
for (iter = v2.begin(); iter != v2.end(); ++iter)
{
cout << *iter << " ";
}
cout << endl;
vector<int>::iterator iLoaction;
iLoaction = find_end(v1.begin(), v1.end(), v2.begin(), v2.end());
if (iLoaction != v1.end())
{
cout << "v1 V2 , :"
<< "v1[" << iLoaction - v1.begin() << "]" << endl;
}
return 0;
}
*******************************************************************************************************************************
C++経典書目索引及び資源ダウンロード:http://blog.csdn.net/jerryjbiao/article/details/7358796
********************************************************************************************************************************