我有一个问题,要求我计算该数组中使用以下任一方法的实例的数量std::count()
or std::find()
。我知道如何使用标准数据(参见底部代码)类型来执行此操作,但不知道如何使用NameContainer
我正在使用的。
//Type
struct NameContainer{
char name [32];
}
//An array of containers
NameContainer *_storedNames = new NameContainer[_numberOfNames];
//An example of what I'm trying to do with a string rather than the NameContainer
std::vector<string> v(_storedNames, _storedNames + _numberOfNames);
//returns an numeric value
return std::count(v.begin(), v.end(), nameToSearch))
您可以使用函子
struct names_equal {
string comp_to;
names_equal(string a) : comp_to(a) {}
bool operator()(NameContainer& p) {
return p.name == comp_to;
}
};
并像这样算
cout << std::count_if(v.begin(), v.end(), names_equal(nameToSearch));
这边走nameToSearch
不必进行硬编码。
EDIT
如果您无法使用count_if
,并且必须是count
然后修改NameContainer并为其重载==。
struct NameContainer{
string name;
bool operator==(string str) {
return name == str;
}
};
然后这样算
cout << std::count(v.begin(), v.end(), nameToSearch);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)