C / C ++ y obtiene en cin.getline () Eficiencia

Al hacer problemas aritméticos, y tomar una gran cantidad de tiempo necesario para el uso de línea de datos, después de comparar la función obtiene con la librería del lenguaje C ++ STL C en cin.getline función (), encontró que se ejecute de manera más eficiente, lo que resulta en el la razón principal de este fenómeno:

En caso de ser

Parámetros necesitan pasar la longitud de la segunda parámetro de longitud, a continuación, en el momento de la detección, una pluralidad de parámetros de transmisión que va a detectarse e individualmente detectar cuando la posición actual del carácter exceda aprobada en: cin.getline

gets (): es una carrera directa hasta que llegó nueva línea encontrado o EOF. La detección de una longitud longitudinal de menos

En términos relativos, tienen sus propias ventajas y desventajas

cin.getline (), la longitud de entrada controlable más flexible

Y se pone el usuario puede introducir una hora incorrecta, es decir, de nueva línea en general no ha entrado o carácter EOF, más que el principio del espacio de memoria de la aplicación, lo que lleva a problemas de desbordamiento de memoria.

La ventaja de la primera es un tamaño fijo se puede pasar el fin de eludir este problema.

Pero al hacerlo también produjo un inconveniente significativo es más que una longitud de la determinación, hace que la CPU a la cantidad de cálculo aumenta en relación consigue en la competición, si una longitud de entrada de un sujeto predeterminado, o rango, y asegúrese de que la entrada se titula normal (de hecho, después de la carrera en segundo plano para detectar los datos son de cribado general estricto), con el fin de garantizar el título con, deberían estar más dispuestos a usar pone, ahorro de tiempo, en un + línea de datos 8000, la cantidad de datos no más de 25 caracteres por línea de tiempo, se hace más rápido que cin.getline casi 50 ms, los datos detallados no probó, pero la diferencia es todavía un poco obvio.

Sin embargo, en el proyecto formal, si los datos de entrada, char * longitud str de los datos no es fijo, o que es el momento incierto, aplicada durante un espacio de memoria fija a la tienda, se debe preferir usar cin.getline, porque se pone en relación con más seguridad, puede reducir la aparición de un problema de desbordamiento de memoria o el riesgo de la aparición de cualquier microbio.

cin.getline debe ser casi equivalente a:

cin.getline (c, longitud);

for (int i = 0; i <longitud; i ++) c [i] = getchar (); 

Como este artículo es mala comprensión, la esperanza de corregir. 

Publicado 18 artículos originales · ganado elogios 8 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/qq_20408397/article/details/83685307
Recomendado
Clasificación