C++ Count,Count_if,find,find_if

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
#include
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
#include
#include
using std::cout;
#include
using std::list;
#include
using std::string;
#include
#include
#include


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");
}

结果:
C++ Count,Count_if,find,find_if_第1张图片

注意:
在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;
	}

你可能感兴趣的:(C/C++基础,STL,c++)