Entiendo que multiset tiene count(), para contar el número de ocurrencias de un valor, porque los elementos se pueden repetir en multiset. ¿Pero de qué sirve contar() en conjunto, cuando todos los valores ya son únicos?¿Por qué STL set tiene count() cuando se supone que todos los elementos son únicos?
11
A
Respuesta
14
count
es parte de la associative container requirements(1).
Se requiere que cada contenedor asociativo lo proporcione como parte de su interfaz, incluso si el resultado es siempre cero o uno como es el caso con std::set
.
(1) Este es un enlace a la documentación de SGI STL que describe el concepto de contenedor asociativo; el concepto tal como se define en el estándar C++ puede diferir ligeramente, pero no sustancialmente.
Cuestiones relacionadas
- 1. Comprobando si todos los elementos en una lista son únicos
- 2. Determinar si un vector no ordenado <T> tiene todos los elementos únicos
- 3. ¿Se supone que los temporizadores EJB son persistentes/confiables?
- 4. ¿Se supone que Sanitizer.GetSafeHtmlFragment elimina los elementos <br>?
- 5. Count valores únicos
- 6. ¿Los objetos estáticos son únicos por usuario?
- 7. ¿`std :: set` ordena los elementos en todos los casos?
- 8. generar los ID únicos HTML en los carriles cuando se utiliza un parcial repetido que tiene form_for
- 9. ¿Se supone siempre que los límites superiores de los rangos indexados son exclusivos?
- 10. ¿Se supone que los comentarios Pascal anidan?
- 11. usando STL para encontrar todos los elementos de un vector
- 12. ¿Por qué la matriz C# no tiene propiedad Count?
- 13. sql set variable usando COUNT
- 14. ¿Se supone que 'eval' es desagradable?
- 15. ¿Qué se supone que significa una "aplicación" de Django?
- 16. ¿Por qué no se restablece CSS use '*' para cubrir todos los elementos?
- 17. ¿Por qué desaparecen los elementos cuando me desplazo por listView?
- 18. ¿Para qué se supone que se utiliza la anotación javax.inject.Named?
- 19. ¿Por qué Dictionary.Add sobrescribe todos los elementos en mi diccionario?
- 20. ¿Se supone que los amigos son transitivos en las clases anidadas?
- 21. WPF: ¿Se supone que soy un diseñador?
- 22. MYSQL borrar todos los resultados que cuentan count (*) = 1
- 23. ¿Se supone que los constructores variados ocultan los generados implícitamente?
- 24. Encontrar todos los datos que se cruzan, no solo los valores únicos
- 25. jQuery. Seleccionar todos los elementos que se inicia con CLASSNAME
- 26. redirigir todos los resultados en un script bash cuando se usa set -x
- 27. pitón reducir comprobar si todos los elementos son iguales
- 28. ¿Por qué Java no ve que los enteros son iguales?
- 29. Array.push() hace que todos los elementos sean iguales cuando se empuja un objeto
- 30. Actualizar consulta cuando todos los campos son opcionales
Hmm ... un requisito obligatorio para un propósito no funcional. Podrían haberlo implementado con un cuerpo vacío para establecer. Extraño ... – Nav
@Nav: No se puede implementar con un cuerpo vacío para 'std :: set' porque debe probar si el elemento existe en el conjunto. Sin embargo, podría implementarse en términos de 'std :: set :: find', (' return find (k)! = End()? 1: 0; '). No es absurdo; incluso para 'std :: set' te dice cuántos elementos con la clave dada existen en el contenedor; simplemente sucede que para 'std :: set', la respuesta es siempre cero o uno. –
Merece la pena señalar que al tener más elementos en común en la interfaz, es más fácil escribir algoritmos de nivel superior que puedan funcionar con cualquiera de los contenedores, y más fácil cambiar el código de codificación de un contenedor para usar otro. Sin embargo, solo tiene sentido cuando las operaciones son semánticamente similares, razón por la cual STL no se desvive por hacer que las diferentes interfaces de los contenedores sean similares. –