UE 4【C+】【2次元および3次元配列の実現】

1878 ワード

template 
class Array2D
{
public:
	Array2D(unsigned int _length, unsigned int _width, const T& defaultValue)
		: length(_length)
		, width(_width)
	{
		for (unsigned int x = 0; x < length; ++x)
		{
			matrix.Add(TArray());

			for (unsigned int y = 0; y < width; ++y)
			{
				matrix[x].Add(defaultValue);
			}
		}
	}

	inline TArray& operator[](unsigned int x)
	{
		return matrix[x];
	}

	inline const TArray& operator[](unsigned int x) const
	{
		return matrix[x];
	}

	inline const unsigned int getLength() const { return length; }
	inline const unsigned int getWidth() const { return width; }

private:
	TArray> matrix;
	const unsigned int length;
	const unsigned int width;
};

 
template 
class Array3D
{
public:
	Array3D(unsigned int _length, unsigned int _width, unsigned int _height, const T& defaultValue)
		: length(_length)
		, width(_width)
		, height(_height)
	{
		for (unsigned int x = 0; x < length; ++x)
		{
			matrix.Add(TArray>());

			for (unsigned int y = 0; y < width; ++y)
			{
				matrix[x].Add(TArray());

				for (unsigned int z = 0; z < height; ++z)
				{
					matrix[x][y].Add(defaultValue);
				}
			}
		}
	}

	inline TArray>& operator[](unsigned int x)
	{
		return matrix[x];
	}

	inline const TArray>& operator[](unsigned int x) const
	{
		return matrix[x];
	}

	inline const unsigned int getLength() const { return length; }
	inline const unsigned int getWidth() const { return width; }
	inline const unsigned int getHeight() const { return height; }

private:
	TArray>> matrix;
	const unsigned int length;
	const unsigned int width;
	const unsigned int height;
};