voglio essere in grado di scrivere in C++ qualcosa di simile al seguente codice Python:Controllare se un elemento è in std :: initializer_list
if x in [1, 2, 3, 5] ...
Per verificare se un elemento è contenuto in una serie di hard- valori codificati, definiti sul posto. Come questo:
if (in(x, {1, 2, 3, 5})) ...
Ecco la possibile implementazione della funzione in
:
template<class T>
bool in(const T& x, std::initializer_list<T> c)
{
return std::find(c.begin(), c.end(), x) != c.end();
}
La mia domanda è: ne ho veramente bisogno di scrivere questa funzione da solo? Ci sono implementazioni predefinite laggiù? Forse in boost? Ho controllato boost::contains
, ma funziona solo con le stringhe.
No, non c'è niente di meglio in C++. Ma hai davvero bisogno di quella (comoda) semantica Python in C++? –
Come regola generale, Python è "batterie incluse" .... C++ è "crea le tue batterie da zero". –
A proposito, perché non omettere le parentesi graffe e utilizzare un modello variadic? O è meno leggibile? – Columbo