1 次元配列

#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;
}
		
(出力)
*** vector クラス ***
u1 : 1 2 3
u2 : 1 2 3
u3 : 1 2 3
    u1[0] -> 10,u2[1] -> 20,u3[2] -> 30
u1 : 10 2 3
u2 : 1 20 3
u3 : 1 2 30
*** vector クラス(u1 のアドレス) ***
u1 : 10 2 3
u2 : 1 20 3
u4 : 10 2 3
    u1[0] -> 10,u2[1] -> 20,u4[2] -> 30
u1 : 10 2 30
u2 : 1 20 3
u4 : 10 2 30
*** 配列 ***
v1 : 1 2 3
v2 : 1 2 3
v3 : 1 2 3
    v1[0] -> 10,v2[1] -> 20,v3[2] -> 30
v1 : 10 2 3
v2 : 1 20 3
v3 : 1 2 30
*** 配列(v1 のアドレス) ***
v1 : 10 2 3
v2 : 1 20 3
v4 : 10 2 3
    v1[0] -> 10,v2[1] -> 20,v3[2] -> 30
v1 : 10 2 30
v2 : 1 20 3
v4 : 10 2 30
*** 配列( new ) ***
w1 : 1 2 3
w2 : 1 2 3
w3 : 1 2 3
    w1[0] -> 10,w2[1] -> 20,w3[2] -> 30
w1 : 10 2 30
w2 : 1 20 3
w3 : 10 2 30