Count,Count_if,find,find_if
cout,count_if
count()和count_if()是全局算法,适用于array,vector,list,forward_list, deque
map,set,unordered_set/map由于是关联式容器,所有有自己的count()和count_if()函数
#include<list>
#include<algorithm>
using namespace std;
void main()
{
using _STL_STRING_LIST_ = list < string > ;
_STL_STRING_LIST_ m_list;
m_list.push_back("GQ001");
m_list.push_back("GQ002");
m_list.push_back("GQ003");
m_list.push_back("GQ009");
m_list.push_back("GQ005");
m_list.push_back("GQ006");
m_list.push_back("GQ007");
m_list.push_back("GQ009");
m_list.push_back("GQ009");
m_list.push_back("GQ010");
m_list.push_back("GQ011");
m_list.push_back("GQ012");
string stemp("GQ009");
int ret = count_if(m_list.begin(), m_list.end(), [stemp](string num)->bool{return num == stemp; });
cout << ret << std::endl;
//按值查询
int nret = count(m_list.begin(), m_list.end(), stemp);
cout << nret << endl;
system("pause");
}
结果:
find,find_if:
find_if()
find()和find_if()是全局算法,适用于array,vector,list,forward_list, deque
map,set,unordered_set/map由于是关联式容器,所有有自己的find()和find_if()函数
#include<iostream>
#include<utility>
#include<algorithm>
using std::cout;
#include<list>
using std::list;
#include<string>
using std::string;
#include<map>
#include<functional>
#include<list>
void main()
{
using _STL_STRING_LIST_ = list < string > ;
_STL_STRING_LIST_ m_list;
m_list.push_back("GQ001");
m_list.push_back("GQ002");
m_list.push_back("GQ003");
m_list.push_back("GQ009");
m_list.push_back("GQ005");
m_list.push_back("GQ006");
m_list.push_back("GQ007");
m_list.push_back("GQ009");
m_list.push_back("GQ009");
m_list.push_back("GQ010");
m_list.push_back("GQ011");
m_list.push_back("GQ012");
string stemp("GQ009");
_STL_STRING_LIST_::iterator its = find_if(m_list.begin(), m_list.end(), [stemp](string num){ return num == stemp; });//返回查找到的第一个出现位置。//如果要使用对象就用这个
if (its != m_list.end())
{
cout << *its << std::endl;
}
_STL_STRING_LIST_::iterator itsx = find(m_list.begin(), m_list.end(), "GQ011");//返回查找到的第一个出现位置。
cout << *itsx << std::endl;
system("pause");
}
结果:
注意:
在vc6下使用,加一个仿函数:
bool ChangeNumber(string strnum)
{
if (strnum == stemp)
{
return true;
}
else
return false;
}
stemp = "GQ007";
//_STL_STRING_LIST_::iterator its = find_if(m_list.begin(), m_list.end(), [stemp](string num){ return num == stemp; });//返回查找到的第一个出现位置。//如果要使用对象就用这个
_STL_STRING_LIST_::iterator its = find_if(m_list.begin(), m_list.end(), ChangeNumber);
if (its != m_list.end())
{
cout << *its << std::endl;
}