#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
// vector クラス
printf("*** vector クラス ***\n");
vector<int> u1 {1, 2, 3};
vector<int> u2 {1, 2, 3};
vector<int> u3 = u1;
printf("u1 : %d %d %d\n", u1[0], u1[1], u1[2]);
printf("u2 : %d %d %d\n", u2[0], u2[1], u2[2]);
printf("u3 : %d %d %d\n", u3[0], u3[1], u3[2]);
printf(" u1[0] -> 10,u2[1] -> 20,u3[2] -> 30\n");
u1[0] = 10;
u2[1] = 20;
u3[2] = 30;
printf("u1 : %d %d %d\n", u1[0], u1[1], u1[2]);
printf("u2 : %d %d %d\n", u2[0], u2[1], u2[2]);
printf("u3 : %d %d %d\n", u3[0], u3[1], u3[2]);
printf("*** vector クラス(u1 のアドレス) ***\n");
vector<int> *u4 = &u1;
printf("u1 : %d %d %d\n", u1[0], u1[1], u1[2]);
printf("u2 : %d %d %d\n", u2[0], u2[1], u2[2]);
printf("u4 : %d %d %d\n", (*u4)[0], (*u4)[1], (*u4)[2]);
printf(" u1[0] -> 10,u2[1] -> 20,u4[2] -> 30\n");
u1[0] = 10;
u2[1] = 20;
(*u4)[2] = 30;
printf("u1 : %d %d %d\n", u1[0], u1[1], u1[2]);
printf("u2 : %d %d %d\n", u2[0], u2[1], u2[2]);
printf("u4 : %d %d %d\n", (*u4)[0], (*u4)[1], (*u4)[2]);
// 配列
printf("*** 配列 ***\n");
int v1[] {1, 2, 3};
int v2[] {1, 2, 3};
int v3[3]; // v3 = v1 ができない
for (int i1 = 0; i1 < 3; i1++)
v3[i1] = v1[i1];
printf("v1 : %d %d %d\n", v1[0], v1[1], v1[2]);
printf("v2 : %d %d %d\n", v2[0], v2[1], v2[2]);
printf("v3 : %d %d %d\n", v3[0], v3[1], v3[2]);
printf(" v1[0] -> 10,v2[1] -> 20,v3[2] -> 30\n");
v1[0] = 10;
v2[1] = 20;
v3[2] = 30;
printf("v1 : %d %d %d\n", v1[0], v1[1], v1[2]);
printf("v2 : %d %d %d\n", v2[0], v2[1], v2[2]);
printf("v3 : %d %d %d\n", v3[0], v3[1], v3[2]);
printf("*** 配列(v1 のアドレス) ***\n");
int *v4 = v1;
printf("v1 : %d %d %d\n", v1[0], v1[1], v1[2]);
printf("v2 : %d %d %d\n", v2[0], v2[1], v2[2]);
printf("v4 : %d %d %d\n", v4[0], v4[1], v4[2]);
printf(" v1[0] -> 10,v2[1] -> 20,v3[2] -> 30\n");
v1[0] = 10;
v2[1] = 20;
v4[2] = 30;
printf("v1 : %d %d %d\n", v1[0], v1[1], v1[2]);
printf("v2 : %d %d %d\n", v2[0], v2[1], v2[2]);
printf("v4 : %d %d %d\n", v4[0], v4[1], v4[2]);
// 配列( new )
printf("*** 配列( new ) ***\n");
int *w1 = new int[3] {1, 2, 3};
int *w2 = new int[3] {1, 2, 3};
int *w3 = w1;
printf("w1 : %d %d %d\n", w1[0], w1[1], w1[2]);
printf("w2 : %d %d %d\n", w2[0], w2[1], w2[2]);
printf("w3 : %d %d %d\n", w3[0], w3[1], w3[2]);
printf(" w1[0] -> 10,w2[1] -> 20,w3[2] -> 30\n");
w1[0] = 10;
w2[1] = 20;
w3[2] = 30;
printf("w1 : %d %d %d\n", w1[0], w1[1], w1[2]);
printf("w2 : %d %d %d\n", w2[0], w2[1], w2[2]);
printf("w3 : %d %d %d\n", w3[0], w3[1], w3[2]);
return 0;
}