find element in both array and vector using one myfind function

 

#include<iostream>
#include<vector>
#include<string>
using namespace std;

//find the begin and end pointer instead of iterator
//just for general function myfind defined blow.
//so you can search your element in both array and standard container .. vector


template <typename elemType>
inline const elemType* begin( const vector<elemType> &vec )
{
       return vec.empty() ? 0 : &vec[0];
}

template <typename elemType>
inline const elemType* end( const vector<elemType> &vec )
{

       //make sure that the next address of the end of the vec
       //not &vec[vec.size()-1] but &vec[vec.size()]

       return vec.empty() ? 0 : &vec[vec.size()]; 
}

template <typename elemType>
const elemType* myfind( const elemType *first,
                        const elemType *last,
                        const elemType &value )
{
     if( !first || !last )
     {
         return 0;
     }
     for( ; first != last; ++first )
     {
          if( *first == value )
          {
              return first;
          }
     }
     return 0;
}

int main()
{
    vector<string> svec;
    svec.push_back("iloveyou");
    string iloveyou("iloveyou");

 

 


    // make sure that convert iterator to pointer to limit the arrange
    const string* result = myfind( begin( svec ), end(svec), iloveyou );
    cout << *result <<endl;   
    system("pause");
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值