-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfamily.cpp
42 lines (33 loc) · 834 Bytes
/
family.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "family.h"
#include <algorithm>
namespace {
bool human_name_comparator(const human& h1, const human& h2) {
return h1.name().length() < h2.name().length();
}
}
void family::add_member(human hm)
{
m_members.push_back(std::move(hm));
}
const human& family::longest_name_member() const
{
return *std::max_element(m_members.cbegin(), m_members.cend(), &human_name_comparator);
/*
* original code
std::string longest_name = m_members[0].name();
for (int i = 1; i < m_members.size(); ++i)
{
if (m_members[i].name().length() > longest_name.length())
{
longest_name = m_members[i].name();
}
}
return longest_name;
*/
}
// use std::any_of()
bool family::has_member_with_name(std::string name) const
{
const human someone{ name };
return std::any_of(m_members.cbegin(), m_members.cend(), someone);
}