unionを使って、ちょっと(いや、微かに)便利なVectorクラス

union MyVec{
 struct {
   int x, y, z;
 };
 int v[3];
};

 
構造体名を定義しないのがミソ。
定義した瞬間コンパイルエラーになってまいます。
こやつを使うと、

MyVec vec;
vec.x = 0;
vec.v[0] = 0;

というように、2種類の方法でアクセスできます。