count_if()是比较符合条件的数量信息。
代码如下:
Count_if.h

#pragma once
#include <algorithm>
#include<map>
#include<iostream>
using namespace std;
void Count_if();
//学生记录结构体
struct stuRecord
{
	struct stuInfo
	{
		char*name;
		int year;
	};
	stuInfo m_stuInfo;
	int id;
	stuRecord(int m_id, char* m_name, int m_year) {
		id = m_id;
		m_stuInfo.name = m_name;
		m_stuInfo.year = m_year;
	}
};
//生成模板
typedef stuRecord::stuInfo stuRI;
inline  bool serRange(pair<int, stuRI>s) {
	//second是迭代器指向对应的值
	if (s.second.year >= 18 && s.second.year <= 20) {
		return true;
	}
	return false;
}

Main.cpp

#include "Count_if.h"
void main(){
	
	Count_if();
}
```javascript
Count_if.cpp
- - - 
#include "Count_if.h"
void Count_if() {
	stuRecord stu1 = stuRecord(1, "张三", 23);
	stuRecord stu2 = stuRecord(2, "李四", 19);
	stuRecord stu3 = stuRecord(3, "刘五", 18);
	stuRecord stu4 = stuRecord(4, "李六", 20);
	stuRecord stu5 = stuRecord(5, "王七", 16);
	map<int, stuRI> m;
	m.insert(make_pair(stu1.id, stu1.m_stuInfo));
	m.insert(make_pair(stu2.id, stu2.m_stuInfo));
	m.insert(make_pair(stu3.id, stu3.m_stuInfo));
	m.insert(make_pair(stu4.id, stu4.m_stuInfo));
	m.insert(make_pair(stu5.id, stu5.m_stuInfo));
	//count_if(首迭代器,未迭代器,搜索值(要比较的值的结果))
	int num = count_if(m.begin(), m.end(), serRange);
	cout << num << endl;
}

效果如下:

更多推荐

C++中count_if()的使用