我有一个字符串向量,我想要计算向量中的所有'Ace'。现在我只能找到一个......
int main()
{
std::vector<string> vec;
vec.push_back("Ace of Spades");
vec.push_back("Ace");
string value = "Ace";
int cnt = 0;
auto iter = find_if(begin(vec), end(vec), [&](const string &str)
{
return str.find(value) != str.npos;
});
if(iter == end(vec))
cout << "no found" << endl;
else
{
cout << *iter << endl;
cnt++;
cout << cnt++ << endl;
}
}
答案 0 :(得分:9)
您可以使用std::count_if
:
auto cnt = count_if(begin(vec),
end(vec),
[&](const string& str) {
return str.find(value) != std::string::npos;
});
请注意,这只会计算包含"Ace"
的字符串数,而不会计算向量元素中"Ace"
的出现次数。
答案 1 :(得分:1)
如果您只想计算匹配元素的数量,可以使用std::count_if。 如果你还需要对它们做些什么,那么最好忘记标准的库算法并使用范围如下:
int count = 0;
for (const auto& element : vec) {
if (element.find(value) != std::string::npos) {
std::cout << element << std::endl;
++count;
}
}
std::cout << count << std::endl;