Lo uso mucho std::set<int>
y, a menudo, simplemente necesito verificar si dicho conjunto contiene un número o no.
Me resultaría natural escribir:
if (myset.contains(number))
...
Pero debido a la falta de un contains
miembro, necesito escribir lo engorroso:
if (myset.find(number) != myset.end())
..
o lo no tan obvio:
if (myset.count(element) > 0)
..
¿Hay alguna razón para esta decisión de diseño?
count()
enfoque es que hace más trabajo del que countains()
tendría que hacer.
contains()
el que devuelve una bool
sería perder información valiosa sobre los que el elemento está en la colección . find()
conserva y devuelve esa información en forma de iterador, por lo que es una mejor opción para una biblioteca genérica como STL. (Sin bool contains()
embargo, eso no quiere decir que no sea muy agradable de tener o incluso necesario)
contains(set, element)
función gratuita utilizando la interfaz pública del conjunto. Por tanto, la interfaz del conjunto es funcionalmente completa; agregar un método de conveniencia solo aumenta la interfaz sin habilitar ninguna función adicional, que no es la forma de C ++.