#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
struct stRPC {
int ID;
string Name;
bool Enable;
stRPC(int id, string name, bool enable = false){
ID = id, Name = name, Enable = enable;
};
};
int main() {
vector <stRPC> vec = {
{0, "NaN"},
{1, "TEST", true},
{22, "Hello"},
{2, "qwerty", false},
};
string search = "test";
int ID = 22;
bool enable = true;
auto iter = find_if(vec.begin(), vec.end(), [search](const stRPC& element){
return element.Name == search;
});
cout << "Search text \"" << search << "\" " << boolalpha << (iter != vec.end()) << endl;
iter = find_if(vec.begin(), vec.end(), [enable](const stRPC& element){
return element.Enable == enable;
});
cout << "Search first enable \"" << enable << "\" " << (iter != vec.end() ? to_string(iter->ID).c_str() : "not find") << endl;
iter = find_if(vec.begin(), vec.end(), [ID](const stRPC& element){
return element.ID == ID;
});
cout << "Search ID \"" << ID << "\" " << boolalpha << (iter != vec.end()) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aW9tYW5pcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IHN0UlBDIHsKCWludCBJRDsKCXN0cmluZyBOYW1lOwoJYm9vbCBFbmFibGU7CglzdFJQQyhpbnQgaWQsIHN0cmluZyBuYW1lLCBib29sIGVuYWJsZSA9IGZhbHNlKXsKCQlJRCA9IGlkLCBOYW1lID0gbmFtZSwgRW5hYmxlID0gZW5hYmxlOwoJfTsKCn07CgppbnQgbWFpbigpIHsKCXZlY3RvciA8c3RSUEM+IHZlYyA9IHsKCQl7MCwgIk5hTiJ9LAoJCXsxLCAiVEVTVCIsIHRydWV9LAoJCXsyMiwgIkhlbGxvIn0sCgkJezIsICJxd2VydHkiLCBmYWxzZX0sCgl9OwoJc3RyaW5nIHNlYXJjaCA9ICJ0ZXN0IjsKCWludCBJRCA9IDIyOwoJYm9vbCBlbmFibGUgPSB0cnVlOwoJYXV0byBpdGVyID0gZmluZF9pZih2ZWMuYmVnaW4oKSwgdmVjLmVuZCgpLCBbc2VhcmNoXShjb25zdCBzdFJQQyYgZWxlbWVudCl7CgkJcmV0dXJuIGVsZW1lbnQuTmFtZSA9PSBzZWFyY2g7Cgl9KTsKCWNvdXQgPDwgIlNlYXJjaCB0ZXh0IFwiIiA8PCBzZWFyY2ggPDwgIlwiICIgPDwgYm9vbGFscGhhIDw8IChpdGVyICE9IHZlYy5lbmQoKSkgPDwgZW5kbDsKCQoJaXRlciA9IGZpbmRfaWYodmVjLmJlZ2luKCksIHZlYy5lbmQoKSwgW2VuYWJsZV0oY29uc3Qgc3RSUEMmIGVsZW1lbnQpewoJCXJldHVybiBlbGVtZW50LkVuYWJsZSA9PSBlbmFibGU7Cgl9KTsKCWNvdXQgPDwgIlNlYXJjaCBmaXJzdCBlbmFibGUgXCIiIDw8IGVuYWJsZSA8PCAiXCIgIiA8PCAoaXRlciAhPSB2ZWMuZW5kKCkgPyB0b19zdHJpbmcoaXRlci0+SUQpLmNfc3RyKCkgOiAibm90IGZpbmQiKSA8PCBlbmRsOwoJCglpdGVyID0gZmluZF9pZih2ZWMuYmVnaW4oKSwgdmVjLmVuZCgpLCBbSURdKGNvbnN0IHN0UlBDJiBlbGVtZW50KXsKCQlyZXR1cm4gZWxlbWVudC5JRCA9PSBJRDsKCX0pOwoJY291dCA8PCAiU2VhcmNoIElEIFwiIiA8PCBJRCA8PCAiXCIgIiA8PCBib29sYWxwaGEgPDwgKGl0ZXIgIT0gdmVjLmVuZCgpKSA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0=