Also uses a lambda instead of binding.
| ... | ... |
@@ -13,6 +13,11 @@ using namespace std::placeholders; |
| 13 | 13 |
|
| 14 | 14 |
eq_str TagList::eqstr; |
| 15 | 15 |
|
| 16 |
+auto TagList::GetTagOrder(const std::string &name) const -> TagsList::const_iterator |
|
| 17 |
+{
|
|
| 18 |
+ return std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), [&](const std::string &tag) { return TagList::eqstr(tag, name); });
|
|
| 19 |
+} |
|
| 20 |
+ |
|
| 16 | 21 |
auto TagList::GetKeys() const -> const TagsList & |
| 17 | 22 |
{
|
| 18 | 23 |
return this->tagsOrder; |
| ... | ... |
@@ -28,7 +33,7 @@ auto TagList::GetTags() const -> TagsList |
| 28 | 33 |
|
| 29 | 34 |
bool TagList::Exists(const std::string &name) const |
| 30 | 35 |
{
|
| 31 |
- return std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), std::bind(TagList::eqstr, _1, name)) != this->tagsOrder.end(); |
|
| 36 |
+ return this->GetTagOrder(name) != this->tagsOrder.end(); |
|
| 32 | 37 |
} |
| 33 | 38 |
|
| 34 | 39 |
std::string TagList::operator[](const std::string &name) const |
| ... | ... |
@@ -41,8 +46,8 @@ std::string TagList::operator[](const std::string &name) const |
| 41 | 46 |
|
| 42 | 47 |
std::string &TagList::operator[](const std::string &name) |
| 43 | 48 |
{
|
| 44 |
- auto tag = std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), std::bind(TagList::eqstr, _1, name)); |
|
| 45 |
- if (tag == this->tagsOrder.end()) |
|
| 49 |
+ auto tagOrder = this->GetTagOrder(name); |
|
| 50 |
+ if (tagOrder == this->tagsOrder.end()) |
|
| 46 | 51 |
{
|
| 47 | 52 |
this->tagsOrder.push_back(name); |
| 48 | 53 |
this->tags[name] = ""; |
| ... | ... |
@@ -52,7 +57,7 @@ std::string &TagList::operator[](const std::string &name) |
| 52 | 57 |
|
| 53 | 58 |
void TagList::Remove(const std::string &name) |
| 54 | 59 |
{
|
| 55 |
- auto tagOrder = std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), std::bind(TagList::eqstr, _1, name)); |
|
| 60 |
+ auto tagOrder = this->GetTagOrder(name); |
|
| 56 | 61 |
if (tagOrder != this->tagsOrder.end()) |
| 57 | 62 |
this->tagsOrder.erase(tagOrder); |
| 58 | 63 |
if (this->tags.count(name)) |