Ada*_*itz 11
你需要大约2.5兆,所以只使用堆应该没问题.除非需要调整大小,否则不需要向量.有关使用"2D"堆数组的示例,请参阅C++ FAQ Lite.
int *array = new int[800*800];
Run Code Online (Sandbox Code Playgroud)
(完成后别忘delete[]了.)
Kev*_*vin 10
到目前为止,每篇文章都为程序员留下了内存管理.这可以而且应该避免.ReaperUnreal非常接近我所做的,除了我使用矢量而不是数组,并且还使用尺寸模板参数并更改访问功能 - 哦,只是IMNSHO清理了一下:
template <class T, size_t W, size_t H>
class Array2D
{
public:
const int width = W;
const int height = H;
typedef typename T type;
Array2D()
: buffer(width*height)
{
}
inline type& at(unsigned int x, unsigned int y)
{
return buffer[y*width + x];
}
inline const type& at(unsigned int x, unsigned int y) const
{
return buffer[y*width + x];
}
private:
std::vector<T> buffer;
};
Run Code Online (Sandbox Code Playgroud)
现在你可以在堆栈上分配这个2-D数组了:
void foo()
{
Array2D<int, 800, 800> zbuffer;
// Do something with zbuffer...
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助!
编辑:从中删除了数组规范Array2D::buffer.感谢Andreas抓住了!