std::vector<int> v1(1000);
std::vector<std::vector<int>> v2(1000);
std::vector<std::vector<int>::const_iterator> v3(1000);
¿Cómo se inicializaron los elementos de estos 3 vectores?std :: elementos de vector inicializando
Acerca de int, lo pruebo y vi que todos los elementos se convierten en 0. ¿Es este estándar? Creí que los primitivos permanecen indefinidos. Creo un vector con 300000000 elementos, proporciono valores distintos de cero, lo elimino y lo vuelvo a crear, para evitar la memoria del sistema operativo para la seguridad de los datos. Los elementos del vector recreado también eran 0.
¿Qué pasa con el iterador? ¿Hay un valor inicial (0) para el constructor predeterminado o el valor inicial permanece indefinido? Cuando compruebo esto, los iteradores apuntan a 0, pero esto puede ser OS
Cuando creo un objeto especial para rastrear constructores, vi que para el primer objeto, vector ejecuta el constructor predeterminado y para todos los demás ejecuta el constructor de copia . ¿Es este estándar?
¿Hay alguna manera de evitar completamente la inicialización de elementos? ¿O debo crear mi propio vector? (Oh, Dios mío, siempre digo NO OTRA IMPLANTACIÓN DE VECTOR) Lo pregunto porque uso matrices dispersas ultragrandes con procesamiento paralelo, así que no puedo usar push_back() y por supuesto no quiero una inicialización inútil, cuando más tarde cambie el valor.
Creo que _C++ 11_ cambia esto a 'n valores inicializados por defecto' en lugar de una inicialización predeterminada seguida de un número de copias. –
@Attila Véase mi respuesta para las cotizaciones de C++ 11. – pmr
Sí C++ 11 cámbialo a n constructores predeterminados. Confirmado. – Chameleon