定义一个姓名(一个汉字2个字符)的vector,用C++编写函数对象,分别统计2个汉字的人数,3个汉字的人数,和名字带有“刚”的人数。
时间: 2023-06-08 08:05:23 浏览: 55
好的,我会根据您的要求进行对话,并保护您的隐私。关于您的问题,以下是一个可能的解决方案:
```c
#include <stdio.h>
#include <string.h>
#include <vector>
using namespace std;
typedef struct {
char name[4];
} Name;
class NameCounter {
public:
NameCounter() {
count_2 = 0;
count_3 = 0;
count_gang = 0;
}
void operator()(vector<Name>& names) {
for (int i = 0; i < names.size(); i++) {
if (strlen(names[i].name) == 6) {
count_2++;
} else if (strlen(names[i].name) == 9) {
count_3++;
}
if (strstr(names[i].name, "刚") != NULL) {
count_gang++;
}
}
}
int get_count_2() {
return count_2;
}
int get_count_3() {
return count_3;
}
int get_count_gang() {
return count_gang;
}
private:
int count_2;
int count_3;
int count_gang;
};
int main() {
// 假设有一些姓名数据
vector<Name> names;
Name name1 = {"张三"};
Name name2 = {"李四五"};
Name name3 = {"王七刚"};
names.push_back(name1);
names.push_back(name2);
names.push_back(name3);
// 统计姓名信息
NameCounter counter;
counter(names);
// 打印结果
printf("2个汉字的人数: %d\n", counter.get_count_2());
printf("3个汉字的人数: %d\n", counter.get_count_3());
printf("名字带有“刚”的人数: %d\n", counter.get_count_gang());
return 0;
}
```
以上代码定义了一个包含计数器函数对象 `NameCounter` 的类,它有三个私有成员变量:`count_2`、`count_3` 和 `count_gang`,分别用于统计2个汉字的人数、3个汉字的人数和名字带有“刚”的人数。在类的构造函数和计数器函数对象的调用运算符中,这些成员变量都被初始化或增加。最后,在 `main` 函数中,可以利用 `NameCounter` 计算姓名数据的统计信息,并且打印出结果。
希望这个例子能够帮助您解决问题。如果您需要更多的帮助,或者您有其他的问题,请随时向我提问。