#include <algorithm>
#include <vector>
#include <iostream>
template <typename T>
auto firstInactive(const std::vector<T>& v)
-> typename std::vector<T>::const_iterator // for c++11
{
return std::find_if(v.begin(), v.end(), [](const T& e) { return !e.active; });
}
struct ChildTest_1{
bool active = false;
};
struct ChildTest_2{
bool active = true;
};
int main()
{
std::vector<ChildTest_1> allTest1(10);
std::vector<ChildTest_2> allTest2(10);
allTest1[0].active = true;
allTest2[4].active = false;
auto it1 = firstInactive(allTest1);
auto it2 = firstInactive(allTest2);
if (it1 != allTest1.end()) {
std::cout << "First inactive in alltest1 is "
<< std::distance(allTest1.cbegin(), it1) << std::endl;
}
if (it2 != allTest2.end()) {
std::cout << "First inactive in alltest2 is "
<< std::distance(allTest2.cbegin(), it2) << std::endl;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgphdXRvIGZpcnN0SW5hY3RpdmUoY29uc3Qgc3RkOjp2ZWN0b3I8VD4mIHYpCi0+IHR5cGVuYW1lIHN0ZDo6dmVjdG9yPFQ+Ojpjb25zdF9pdGVyYXRvciAvLyBmb3IgYysrMTEKewogICAgcmV0dXJuIHN0ZDo6ZmluZF9pZih2LmJlZ2luKCksIHYuZW5kKCksIFtdKGNvbnN0IFQmIGUpIHsgcmV0dXJuICFlLmFjdGl2ZTsgfSk7Cn0KCnN0cnVjdCBDaGlsZFRlc3RfMXsKICAgIGJvb2wgYWN0aXZlID0gZmFsc2U7Cn07CgpzdHJ1Y3QgQ2hpbGRUZXN0XzJ7CiAgICBib29sIGFjdGl2ZSA9IHRydWU7Cn07CgoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnZlY3RvcjxDaGlsZFRlc3RfMT4gYWxsVGVzdDEoMTApOwogICAgc3RkOjp2ZWN0b3I8Q2hpbGRUZXN0XzI+IGFsbFRlc3QyKDEwKTsKICAgIAogICAgYWxsVGVzdDFbMF0uYWN0aXZlID0gdHJ1ZTsKICAgIGFsbFRlc3QyWzRdLmFjdGl2ZSA9IGZhbHNlOwogICAgCiAgICBhdXRvIGl0MSA9IGZpcnN0SW5hY3RpdmUoYWxsVGVzdDEpOwogICAgYXV0byBpdDIgPSBmaXJzdEluYWN0aXZlKGFsbFRlc3QyKTsKICAgIAogICAgaWYgKGl0MSAhPSBhbGxUZXN0MS5lbmQoKSkgewogICAgICAgIHN0ZDo6Y291dCA8PCAiRmlyc3QgaW5hY3RpdmUgaW4gYWxsdGVzdDEgaXMgIgogICAgICAgICAgICAgICAgICA8PCBzdGQ6OmRpc3RhbmNlKGFsbFRlc3QxLmNiZWdpbigpLCBpdDEpIDw8IHN0ZDo6ZW5kbDsKICAgIH0KICAgIGlmIChpdDIgIT0gYWxsVGVzdDIuZW5kKCkpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIkZpcnN0IGluYWN0aXZlIGluIGFsbHRlc3QyIGlzICIKICAgICAgICAgICAgICAgICAgPDwgc3RkOjpkaXN0YW5jZShhbGxUZXN0Mi5jYmVnaW4oKSwgaXQyKSA8PCBzdGQ6OmVuZGw7CiAgICB9Cn0=