Мотыга об использовании std::set<std::string>
?
#include <iostream>
#include <set>
#include <string>
std::string helper(const std::string & str,
const std::set<std::string> & lst)
{
return lst.find(str) == lst.end() ? "" : str;
}
int main()
{
std::set<std::string> lst = {"alpha", "beta", "gamma"};
std::cout << "return " << helper("alpha", lst) << "\n";
std::cout << "return " << helper("zeta", lst) << "\n";
return 0;
}
Выход
return alpha
return
Конечно, это действительно зависит от того, что ваше определение не возвращает .
Если это означает пустую строку, используйте вышеуказанное решение. Сохраняйте свою жизнь простой.
Если это означает ошибку и программа должна завершиться, вы можете #include <cassert>
и просто
assert(lst.find(str) != lst.end());
Если это означает исключение для обработки, вы можете try
throw
и catch
.
Если это означает возврат std::string
, если str
находится в предопределенном списке, но void
, если его нет, вам могут потребоваться некоторые приемы, как описано в <type_traits>
.