STL find_if应用及其他
2016-03-08 16:35
381 查看
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>
int _tmain(int argc, _TCHAR* argv[])
{
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++;
}
}
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>
int _tmain(int argc, _TCHAR* argv[])
{
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++;
}
}
相关文章推荐
- Android图片高斯模糊的一些方法
- 二进制文件的读写
- netty
- spring spring-mvc mybatis jetty 的pom.xml依赖配置完整版
- 服务器发布MVC常见问题解决方案
- Eratosthes algrithm 求素数
- hdoj 5093 Battle ships 【二分图最大匹配】
- ubuntu用户添加adduser, useradd
- 【POJ2135】Farm Tour(最小费用最大流)
- 表-Stack栈
- Exynos4412 文件系统制作(二)—— 文件系统简介
- android viewpage用法及适配器
- 2 Javascript 存储数据
- Unsharp Mask(USM)锐化算法的的原理及其实现
- javascript动画
- ionic项目的一些简单操作
- 用Android Studio对应用签名打包
- Windows找不到文件’C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\Computer Mana
- 解决Error inflating class android.support.v7.widget.RecyclerView
- jquery.pagination.js分页