#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
class Ingredient
{
public:
Ingredient() = default;
Ingredient(std::string name, std::string first, std::string second, std::string third, std::string fourth) :
iName(std::move(name)),
pAttr(std::move(first)),
sAttr(std::move(second)),
tAttr(std::move(third)),
qAttr(std::move(fourth))
{
}
const std::string& getName() const
{
return iName;
}
void displayIngredient() const
{
std::cout << '\n';
std::cout << "Ingredient: " << iName << '\n';
std::cout << "Primary Effect: " << pAttr << '\n';
std::cout << "Secondary Effect: " << sAttr << '\n';
std::cout << "Tertiary Effect: " << tAttr << '\n';
std::cout << "Quaternary Effect: " << qAttr << '\n';
}
private:
std::string iName;
std::string pAttr;
std::string sAttr;
std::string tAttr;
std::string qAttr;
};
int main()
{
std::vector<Ingredient> satchel;
satchel.reserve(3);
satchel.emplace_back("White Cap", "Weakness to Frost", "Fortify Heavy Armor", "Restore Magicka", "Ravage Magicka");
satchel.emplace_back("Wisp Wrappings", "Restore Stamina", "Fortify Destruction", "Fortify Carry Weight", "Resist Magic");
satchel.emplace_back("Yellow Mountain Flower", "Resist Poison", "Fortify Restoration", "Fortify Health", "Damage Stamina Regen");
const auto ingredientFoundByName = std::find_if(satchel.begin(), satchel.end(),
[&](const Ingredient& currIngredient)
{
return currIngredient.getName() == "Yellow Mountain Flower";
});
if (ingredientFoundByName != satchel.end())
{
ingredientFoundByName->displayIngredient();
}
else
{
std::cout << "Could not find ingredient\n";
}
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKY2xhc3MgSW5ncmVkaWVudAp7CnB1YmxpYzoKCUluZ3JlZGllbnQoKSA9IGRlZmF1bHQ7CglJbmdyZWRpZW50KHN0ZDo6c3RyaW5nIG5hbWUsIHN0ZDo6c3RyaW5nIGZpcnN0LCBzdGQ6OnN0cmluZyBzZWNvbmQsIHN0ZDo6c3RyaW5nIHRoaXJkLCBzdGQ6OnN0cmluZyBmb3VydGgpIDoKCQlpTmFtZShzdGQ6Om1vdmUobmFtZSkpLAoJCXBBdHRyKHN0ZDo6bW92ZShmaXJzdCkpLAoJCXNBdHRyKHN0ZDo6bW92ZShzZWNvbmQpKSwKCQl0QXR0cihzdGQ6Om1vdmUodGhpcmQpKSwKCQlxQXR0cihzdGQ6Om1vdmUoZm91cnRoKSkKCXsKCX0KCQoJY29uc3Qgc3RkOjpzdHJpbmcmIGdldE5hbWUoKSBjb25zdAoJewoJCXJldHVybiBpTmFtZTsKCX0KCQoJdm9pZCBkaXNwbGF5SW5ncmVkaWVudCgpIGNvbnN0Cgl7CgkJc3RkOjpjb3V0IDw8ICdcbic7CgkJc3RkOjpjb3V0IDw8ICJJbmdyZWRpZW50OiAiIDw8IGlOYW1lIDw8ICdcbic7CgkJc3RkOjpjb3V0IDw8ICJQcmltYXJ5IEVmZmVjdDogIiA8PCBwQXR0ciA8PCAnXG4nOwoJCXN0ZDo6Y291dCA8PCAiU2Vjb25kYXJ5IEVmZmVjdDogIiA8PCBzQXR0ciA8PCAnXG4nOwoJCXN0ZDo6Y291dCA8PCAiVGVydGlhcnkgRWZmZWN0OiAiIDw8IHRBdHRyIDw8ICdcbic7CgkJc3RkOjpjb3V0IDw8ICJRdWF0ZXJuYXJ5IEVmZmVjdDogIiA8PCBxQXR0ciA8PCAnXG4nOwoJfQoKcHJpdmF0ZToKCXN0ZDo6c3RyaW5nIGlOYW1lOwoJc3RkOjpzdHJpbmcgcEF0dHI7CglzdGQ6OnN0cmluZyBzQXR0cjsKCXN0ZDo6c3RyaW5nIHRBdHRyOwoJc3RkOjpzdHJpbmcgcUF0dHI7Cn07CgppbnQgbWFpbigpCnsKCXN0ZDo6dmVjdG9yPEluZ3JlZGllbnQ+IHNhdGNoZWw7CglzYXRjaGVsLnJlc2VydmUoMyk7CglzYXRjaGVsLmVtcGxhY2VfYmFjaygiV2hpdGUgQ2FwIiwgIldlYWtuZXNzIHRvIEZyb3N0IiwgIkZvcnRpZnkgSGVhdnkgQXJtb3IiLCAiUmVzdG9yZSBNYWdpY2thIiwgIlJhdmFnZSBNYWdpY2thIik7ICAKCXNhdGNoZWwuZW1wbGFjZV9iYWNrKCJXaXNwIFdyYXBwaW5ncyIsICJSZXN0b3JlIFN0YW1pbmEiLCAiRm9ydGlmeSBEZXN0cnVjdGlvbiIsICJGb3J0aWZ5IENhcnJ5IFdlaWdodCIsICJSZXNpc3QgTWFnaWMiKTsKCXNhdGNoZWwuZW1wbGFjZV9iYWNrKCJZZWxsb3cgTW91bnRhaW4gRmxvd2VyIiwgIlJlc2lzdCBQb2lzb24iLCAiRm9ydGlmeSBSZXN0b3JhdGlvbiIsICJGb3J0aWZ5IEhlYWx0aCIsICJEYW1hZ2UgU3RhbWluYSBSZWdlbiIpOwoKCWNvbnN0IGF1dG8gaW5ncmVkaWVudEZvdW5kQnlOYW1lID0gc3RkOjpmaW5kX2lmKHNhdGNoZWwuYmVnaW4oKSwgc2F0Y2hlbC5lbmQoKSwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsmXShjb25zdCBJbmdyZWRpZW50JiBjdXJySW5ncmVkaWVudCkKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAlyZXR1cm4gY3VyckluZ3JlZGllbnQuZ2V0TmFtZSgpID09ICJZZWxsb3cgTW91bnRhaW4gRmxvd2VyIjsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKCWlmIChpbmdyZWRpZW50Rm91bmRCeU5hbWUgIT0gc2F0Y2hlbC5lbmQoKSkKCXsKCQlpbmdyZWRpZW50Rm91bmRCeU5hbWUtPmRpc3BsYXlJbmdyZWRpZW50KCk7Cgl9CgllbHNlCgl7CgkJc3RkOjpjb3V0IDw8ICJDb3VsZCBub3QgZmluZCBpbmdyZWRpZW50XG4iOwoJfQoKCXJldHVybiBFWElUX1NVQ0NFU1M7Cn0=