#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct MyStruct
{
MyStruct() = default;
MyStruct(std::string name, int stuff, float moreStuff)
: name(name), stuff(stuff), moreStuff(moreStuff)
{ }
std::string name;
int stuff;
float moreStuff;
};
int main()
{
std::vector<MyStruct> data;
data.emplace_back("Tom", 123, 1.23);
data.emplace_back("Sam", 345, 3.45);
data.emplace_back("Lemony", 777, 7.77);
data.emplace_back("Kit", 555, 5.55);
data.emplace_back("Jaques", 333, 3.33);
data.emplace_back("Bob", 567, 5.67);
std::string nameToLookup = "Lemony";
//If used alot, wrap into a helper function, like 'LookupByName()'
auto it = std::find_if(std::begin(data), std::end(data),
[&](const MyStruct &myStruct) -> bool
{ return (myStruct.name == nameToLookup); });
if(it != data.end())
{
std::cout << "Looked up '" << nameToLookup << "', and found '" << it->stuff << "' and '" << it->moreStuff << "'" << std::endl;
}
else
{
std::cout << "Looked up '" << nameToLookup << "', but couldn't find an element with that name." << std::endl;
}
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE15U3RydWN0CnsKCU15U3RydWN0KCkgPSBkZWZhdWx0OwoJTXlTdHJ1Y3Qoc3RkOjpzdHJpbmcgbmFtZSwgaW50IHN0dWZmLCBmbG9hdCBtb3JlU3R1ZmYpCgkJOiBuYW1lKG5hbWUpLCBzdHVmZihzdHVmZiksIG1vcmVTdHVmZihtb3JlU3R1ZmYpCgl7IH0KCQoJc3RkOjpzdHJpbmcgbmFtZTsKCWludCBzdHVmZjsKCWZsb2F0IG1vcmVTdHVmZjsKfTsKCgoKaW50IG1haW4oKQp7CglzdGQ6OnZlY3RvcjxNeVN0cnVjdD4gZGF0YTsKCQoJZGF0YS5lbXBsYWNlX2JhY2soIlRvbSIsIDEyMywgMS4yMyk7CglkYXRhLmVtcGxhY2VfYmFjaygiU2FtIiwgMzQ1LCAzLjQ1KTsKCWRhdGEuZW1wbGFjZV9iYWNrKCJMZW1vbnkiLCA3NzcsIDcuNzcpOwoJZGF0YS5lbXBsYWNlX2JhY2soIktpdCIsIDU1NSwgNS41NSk7CglkYXRhLmVtcGxhY2VfYmFjaygiSmFxdWVzIiwgMzMzLCAzLjMzKTsKCWRhdGEuZW1wbGFjZV9iYWNrKCJCb2IiLCA1NjcsIDUuNjcpOwoJCglzdGQ6OnN0cmluZyBuYW1lVG9Mb29rdXAgPSAiTGVtb255IjsKCQoJCgkvL0lmIHVzZWQgYWxvdCwgd3JhcCBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uLCBsaWtlICdMb29rdXBCeU5hbWUoKScKCWF1dG8gaXQgPSBzdGQ6OmZpbmRfaWYoc3RkOjpiZWdpbihkYXRhKSwgc3RkOjplbmQoZGF0YSksCgkJCQkJCSAgIFsmXShjb25zdCBNeVN0cnVjdCAmbXlTdHJ1Y3QpIC0+IGJvb2wKCQkJCQkJICAgeyByZXR1cm4gKG15U3RydWN0Lm5hbWUgPT0gbmFtZVRvTG9va3VwKTsgfSk7CgkKCWlmKGl0ICE9IGRhdGEuZW5kKCkpCgl7CgkJc3RkOjpjb3V0IDw8ICJMb29rZWQgdXAgJyIgPDwgbmFtZVRvTG9va3VwIDw8ICInLCBhbmQgZm91bmQgJyIgPDwgaXQtPnN0dWZmIDw8ICInIGFuZCAnIiA8PCBpdC0+bW9yZVN0dWZmIDw8ICInIiA8PCBzdGQ6OmVuZGw7Cgl9CgllbHNlCgl7CgkJc3RkOjpjb3V0IDw8ICJMb29rZWQgdXAgJyIgPDwgbmFtZVRvTG9va3VwIDw8ICInLCBidXQgY291bGRuJ3QgZmluZCBhbiBlbGVtZW50IHdpdGggdGhhdCBuYW1lLiIgPDwgc3RkOjplbmRsOwoJfQoJCgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==