Forma correcta de bucle a través de las matrices de C ++

Recientemente he encontrado muchos ejemplos, la mayoría de ellos relacionados con el C ++ 98, de todos modos he creado mi matriz simple y un bucle (teclado):

#include <iostream>
using namespace std;

int main ()
{
   string texts[] = {"Apple", "Banana", "Orange"};
   for( unsigned int a = 0; a < sizeof(texts); a = a + 1 )
   {
       cout << "value of a: " << texts[a] << endl;
   }

   return 0;
}

Salida:

value of a: Apple
value of a: Banana
value of a: Orange

Segmentation fault

Está funcionando bien, excepto la falla de segmentación al final.

Mi pregunta es, ¿esta matriz / bucle se realiza de forma correcta? Estoy usando C ++ 11, ¿me gustaría estar seguro de que cumple con los estándares y no podría hacerse de una mejor manera?

Respuestas a la pregunta(6)

Su respuesta a la pregunta