또 하나의 방법입니다 가 아니면, 그냥 여기
(http://www.boost.org/doc/libs/1_53_0/libs/multi_array/doc/user.html)
은 예입니다 부스트 :: multi_array를 사용 수업. 여기
예 : 답장을 보내
#include <iostream>
#include <vector>
class array_2d
{
public:
array_2d(
unsigned int x,
unsigned int y)
:
m_size_x(x),
m_size_y(y),
// resize vector to size x*y, all elements are 0.
m_data(x*y, 0)
{}
int
get(unsigned int x, unsigned int y) const
{
return m_data[ x + y * m_size_y ];
}
void
set(unsigned int x, unsigned int y, int data)
{
m_data[ x + y * m_size_y ] = data;
}
private:
unsigned int m_size_x;
unsigned int m_size_y;
std::vector <int> m_data;
};
int main()
{
// 2D array 2x3.
array_2d m(2, 3);
// Set 2 cells into 1 and 3.
m.set(1, 1, 1);
m.set(2, 0, 3);
for(unsigned int i = 0; i < 3; ++i)
{
for(unsigned int j = 0; j < 2; ++j)
std::cout << m.get(i, j) << " ";
std::cout << std::endl;
}
return 0;
}
개인적으로 더 효율적이므로 내 벡터 솔루션보다 개인적으로 더 좋아합니다. 하지만 여기서는 좀 더 코드를 작성해야 할 것입니다. 여기에서 수행 된 좌표 변환에 operator() 또는 []를 추가하면 array2d (1,3) = 7과 같은 작업을 수행하여 요소를 액세스/수정할 수 있습니다. if (array2d (1,3)> 5) 여전히 +1입니다. –
AlexK