1.find()
template<class InputIterator, class T>
InputIterator find ( InputIterator first, InputIterator last, const T& value )
{
for ( ;first!=last; first++) if ( *first==value ) break;
return first;
}
2.find_if()
InputIterator find_if ( InputIterator first, InputIterator last, Predicate pred )
{
for ( ; first!=last ; first++ ) if ( pred(*first) ) break;
return first;
}
3.find_if例子1
struct STU{
int age;
int hight;
bool sex;
};
bool GetAge(STU s)
{
if (s.age==2)
{
return true;
}
return false;
}
vector<STU> vec;
STU a,b,c;
a.age=1;
a.hight=1;
a.sex=1;
b.age=2;
b.hight=2;
b.sex=2;
c.age=3;
c.hight=3;
c.sex=3;
vec.push_back(a);
vec.push_back(b);
vec.push_back(c);
vector<STU>::iterator it = std::find_if(vec.begin(),vec.end(),GetAge);
if (it!=vec.end())
{
printf("age=%d\n",it->age);
}
3.find_if例子2
class __IsEqual
{
friend class KUiSign;
public:
bool operator () (const SignRewardInfo & R)
{
return R.nIndex == m_nIndex;
}
private:
explicit __IsEqual(int nIndex)
{
m_nIndex = nIndex;
}
int m_nIndex;
};
struct SignRewardInfo
{
int nIndex;
int nNeedDays;
}
typedef std::vector<SignRewardInfo>SignRewardVector;
int nId =10;
__IsEqual equal(nId);
SignRewardVector::iterator iter = std::find_if(m_vecPileReward.begin(), m_vecPileReward.end(), equal);
#inluce<map>
#include<string>
{
multimap <string ,int> m;//multimap的创建
m.insert(pair<string,int>("Jack",1));//插入
m.insert(pair<string,int>("Jack",2));
m.insert(pair<string,int>("Body",1));
m.insert(pair<string,int>("Navy",4));
//m.insert(pair<string,int>("Demo",3));
multimap<string,int>::iterator iter;
for (iter = m.begin();iter != m.end();++iter)//遍历
{
cout<<(*iter).first<<" "<<(*iter).second<<endl;
}
m.erase("Navy");//multimap的删除
cout<<"The element after delete:"<<endl;
for (iter = m.begin();iter != m.end();++iter)
{
cout<<(*iter).first<<" "<<(*iter).second<<endl;
}
//multimap元素的查找
multimap<string,int>::iterator it;
int num=m.count("Jack");
it = m.find("Jack");
cout<<"the search result is :"<<endl;
for(int i=1;i<=num;i++)
{
cout<<it->first<<" "<<it->second<<endl;
it++;
}
cout<<m.empty()<<endl;
if (!m.empty())
{
cout<<m.size()<<endl;
}
return 0;
}
服务器的使用(linux下)
for (LimitAttrList::iterator iter = temp.begin(); iter != temp.end();)
{
int nBaseId = m_Helper.GetBaseIdBySpecialID(*iter);
bool bHaveBase = false;
for (int i = 0; i < MAX_BASE_PROPERTY_NUM; ++i)
{
if ( pBaseProp[i].nPropertyID == nBaseId )
{
bHaveBase = true;
}
}
// 如果基础属性里没有 对应 特殊属性 即 基础属性+5攻击 而特殊属性是+5%防御 不匹配
if (!bHaveBase)
{
iter = temp.erase(iter);
}
else
{
iter++;
}
}