備忘録

プログラムやゲーム関連に関すること

【C++】std::for_each での値の走査

ポインタでのイテレータの begin と end の割り当てに嵌ったのでメモ

#include <iostream>
#include <algorithm>
#include <array>
#include <iterator>

int main()
{
	// メモリ走査
	int size = 4;
	int *i = new int[size];
	memset(i, 0, sizeof(int) * size);
	std::for_each(&i[0], &i[size], [](int &x){ x = 1; });
	std::copy(&i[0], &i[size], std::ostream_iterator<int>(std::cout, " ")); // 1 1 1 1
	std::cout << std::endl;
	delete [] i;

	// 配列走査(比較用)
	std::array<int, 4> ar = {0};
	std::for_each(ar.cbegin(), ar.cend(), [](const int &x){ const_cast<int&>(x) = 1; });
	std::copy(ar.cbegin(), ar.cend(), std::ostream_iterator<int>(std::cout, " ")); // 1 1 1 1
	std::cout << std::endl;

	return 0;
}