¿Cuál es la diferencia entre usar una estructura con dos campos y un par?
¿Cuál es la diferencia con respecto a la asignación de memoria y la eficiencia entre el uso de una estructura con dos campos y un par?
6 answers
std::pair
proporciona constructores pre-escritos y operadores de comparación. Esto también permite que se almacenen en contenedores como std:: map sin necesidad de escribir, por ejemplo, el constructor de copia o el orden estricto débil a través de operator <
(como lo requiere std::map
). Si no los escribes, no puedes cometer un error (¿recuerdas cómo funciona el orden estricto y débil? por lo tanto, es más confiable usar std::pair
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-17 18:27:07
std::pair
viene con una serie de constructores y operadores.
A struct
permite campos con nombre (distintos de first
y second
) y está listo para ser extendido en cualquier momento.
Prefiera un struct
cuando pueda. Puede implicar algunos gastos generales, pero es definitivamente más fácil para el mantenimiento.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-01 09:41:34
En términos de asignación de memoria y eficiencia, no hay diferencia since ya que eso es exactamente lo que es un std::pair
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-10 11:06:02
No hay diferencia en términos de asignación de memoria o eficiencia. De hecho, en la implementación de STL que estoy usando el par se define como struct pair
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-10 11:06:27
Como esto no se menciona anteriormente, si desea los beneficios de su propio nombre, pero las ventajas de std::pair (o cualquier otro objeto), puede usar ( desde c++11 en adelante). Puede establecer esto en su espacio de nombres o declaración de clase.
using myPair = pair<int,string>;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-01 08:56:57
Como se indica en std::pair
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-30 11:35:21