#include " IncrementArray.hpp "
テンプレート <型名要素>
要素 * find_address(要素*配列、int型のサイズ、要素&値)
{
もし(配列||サイズ<!1 )
{
戻り 0 ;
}
のために(int型 i = 0 ; iは、サイズ<; ++ I、++ アレイ)
{
もし、((*配列)== 値)
{
戻りアレイ。
}
}
戻り 0 。
}
テンプレート<型名要素>
要素 * use_sentinel(要素* first_address、素子*センチネル、要素&値)
{
場合(first_address ||!センチネル)
{
戻り 0 。
}
のための(; first_address =センチネル;!++ first_address)
{
もし、((* first_address)== 値)
{
戻りfirst_address。
}
}
戻り 0 。
}
int型のmain()
{
COUT << 、 " こんにちは、ハル\ n " 。
弦string_array [ 9 ] = { " ちょっと"、" ちょっと"、" あなた"、" あなた"、" I "、" しないでください"、" のように"、" あなた"、" ガールフレンド" };
ベクター < ストリング >アヴリル(string_array、string_array + 9 )。
文字列は、誰= "
裁判所未満 << " 私はあなたのガールフレンドが好きではない私は彼女の住所を知っている:" << find_address(&(アヴリル[ 0 ])、9、だれ)<< てendl;
INT integer_array [ 4 ] = { 1、2、3、4 }。
int型 4 = 4 ;
裁判所未満 << " はどこ4だああ、ここにある:?" << use_sentinel(&(integer_array [ 0 ])、&(integer_array [ 0 ])+ 5、4)<< てendl;
] = { 1、1、2、3、5、8、13、21 }。
ダブルダ[ 8 ] = { 1.0、2.0、3.0、4.0、5.0、6.0、7.0、8.0 }。
文字列 SA [ 4 ] = { " LIM "、" AAA "、" DDD "、" DCC "}。
INT * PI = use_sentinel(IA、IA + 8、IA [ 3 ])。
二重 * PD = use_sentinel(DA、DA + 8、DA [ 3 ])。
ストリング * PS = use_sentinel(SA、SA + 4、SA [ 2 ])。
裁判所未満 << " PS = " << PS << " PD = " << PD << " PI = " <<パイ<< てendl;
リターン 0 ;
}
出力:
こんにちは、ハル。
私はあなたのガールフレンドが好きではありません。0x1b1b70:私は彼女の住所を知っています
4はどこですか?ああ、ここにある:0x72fc6c
ps=0x72fbb0 pd=0x72fc08 pi=0x72fc3c
添加另一个函数:
template <typename elemType>
const elemType * find_ver5(const elemType *first,
const elemType *last, const elemType &value )
{
if ( ! first || ! last )
return 0;
// while first does not equal last,
// compare value with element addressed by first
// if the two are equal, return first
// otherwise, increment first to address next element
for ( ; first != last; ++first )
if ( *first == value )
return first;
return 0;
}
main函数中需要这么定义,加const。
const int *pi = find_ver5(ia,ia+8,ia[3]);
否则无法编译通过。