¿Se puede usar un valor flotante como índice de una matriz? ¿Qué pasará si una expresión utilizada como índice resultara en un valor flotante?Valores flotantes como índice en una matriz en C++
Respuesta
El valor flotante se debe enyesar a int (que puede dar aviso o de error dependiendo del nivel de advertencia de compilador)
s1 = q[12.2]; // same as q[12]
s2 = q[12.999999]; // same as q[12]
s3 = q[12.1/6.2]; // same as q[1]
Sí. Pero no tiene sentido. El valor flotante se truncará en un entero.
(Puede utilizar std::map<float, T>
, sin embargo, pero la mayor parte del tiempo que va a perder los valores destinados a causa de la inexactitud.)
+1 for 'std :: map' –
En cuanto a la inexactitud, creo que debería haber alguna forma de proporcionar su propia función de comparación, donde puede incluir un 'épsilon' ... una especie de tolerancia. –
@Agnel Kurian std :: mapa, por supuesto, le permite exactamente esto –
Será fundido a int.
Una matriz C++ es una secuencia contigua de ubicaciones de memoria. a[x]
significa "la ubicación de la memoria xth después de uno apuntado por a
."
¿Qué significaría acceder al objeto 12.4 en una secuencia?
Nota para pedantes: sí, sé que las compensaciones de matriz no son una simple adición de enteros a punteros: esta oración asume que una "ubicación de memoria" es del tamaño de un miembro de matriz, por lo que para una int a [], a [5] significa la quinta palabra, no el quinto byte. – Crashworks
Esto es un error. En [expr.sub]
:
Una expresión de post fi x seguida de una expresión entre corchetes es una expresión de correos fijos. Una de las expresiones tendrá el tipo "puntero a T" y la otra tendrá enumeración sin ámbito o tipo integral.
No estoy al tanto de una cláusula en la norma que especifica que la conversión debe ocurrir aquí (la verdad, no me sorprendería si existía una cláusula de este tipo), aunque las pruebas con ideone.com produjo un error de compilación.
Sin embargo, si está suscribiendo una clase en lugar de un puntero — p. std::vector
o std::array
— entonces la sobrecarga de operator[]
tendrá la semántica habitual de una llamada a función, y los argumentos de punto flotante se convertirán a la size_type
correspondiente.
- 1. llaves flotantes flotantes en C#
- 2. Redondeo de valores flotantes
- 3. ¿C tiene matriz con índice es una cadena como PHP?
- 4. variable como índice en una matriz asociativa - Javascript
- 5. Convertir cadenas en flotantes en Objective-C
- 6. Valores de índice de una matriz usando fila, col indicies
- 7. ¿Puede una matriz contener enteros y flotantes?
- 8. sustituir valores en una matriz
- 9. COMO de crear una matriz de valores hash en Ruby
- 10. Pasar una matriz como argumento a una función en C
- 11. El uso de una enumeración como un índice de matriz en C#
- 12. Cómo implementar una matriz enorme en C
- 13. Conversión de matriz de cadenas en matriz de flotantes
- 14. Buscar la clave/índice más alto en una matriz
- 15. MATLAB: Asignación de valores a Índice de otra matriz
- 16. C#: Alteración de valores para cada elemento en una matriz
- 17. Javascript: comparar dos valores flotantes
- 18. Encontrar índice de valores duplicados en una ArrayList
- 19. imprimir los valores de una matriz (MAT) en OpenCV C++
- 20. índice del elemento en una matriz multidimensional
- 21. Adición de valores a una C# matriz
- 22. Variable como índice de matriz bash?
- 23. Índice dict de python por objeto o dos flotantes
- 24. Use un vector como índice para una matriz
- 25. ¿Cómo obtener valores distintos de una matriz en C#?
- 26. cómo anexar valores a una matriz en Objective-C
- 27. C# 4.0: Valores predeterminados del parámetro de método como matriz
- 28. ¿Cómo declaro una matriz como una constante en Objective-c?
- 29. Cómo convertir una matriz de flotantes a una matriz de dobles en Java?
- 30. Conversión de una matriz de bytes en una matriz de flotantes
¿Suena como tarea? –
Una muy mala idea debido a errores de redondeo. Sin embargo, a veces esto es útil, pero luego el valor debe convertirse en entero primero y la comprobación de límites (o la limitación) debe hacerse antes de acceder. Esta operación puede ser útil, p. para aproximar valores para una función de coma flotante usando una tabla de búsqueda. – Tronic