きままにブログ

プログラミングを主とした私のメモ帳です。寂しいのでコメントください笑

vectorとarrayをつかう

どちらも当然引数に渡すとコピーされる。(一応確認)

void func(vector<int> v) {
	v[0] = 3;
}

void func(array<int, 3> v) {
	v[0] = 3;
}

int main() {
	vector<int> v1 = { 1, 2, 3 };
	array<int, 3> v2 = { 1, 2, 3 };
	
	func(v1);
	func(v2);

	printf("%d, %d", v1[0], v2[0]);
}

当たり前だけど…。変更したければ参照を用いる。

array<int, 3> v;

const auto l = [](array<int, 3>& it, size_t n) {
	for(auto& it : it) {
		it = n;
	}
};

l(v, 10);

は当然10で埋められる。

arrayで確保するはいいがコンストラクタの引数を与えられないので、改めて要素を確保して0で初期化する例 :

array<vector<int>, 3> v;

const auto l = [](array<vector<int>, 3>& it, size_t size) {
	for(auto& it : it) {
		it = vector<int>(size);
		std::fill(it.begin(), it.end(), 0);
	}
};

l(v, 5);

v[0][0] = 0;