【发布时间】:2012-03-04 21:06:06
【问题描述】:
我正在使用boost::multi_array,当我需要检查给定坐标是否在范围内时,我会这样做:
bool MapData::IsWithinBounds(TileArray3D::index x, TileArray3D::index y, TileArray3D::index z) const {
return (x >= 0 and x < GetWidth()) and
(y >= 0 and y < GetHeight()) and
(z >= 0 and z < GetDepth());
}
其中TileArray3D 定义为:
typedef boost::multi_array<TileID, 3> TileArray3D;
而TileID 是:
BOOST_STRONG_TYPEDEF(int, TileID);
GetWidth/Height/depth 的签名是:
TileArray3D::size_type GetWidth() const;
但TileArray3D::size_type 未签名,TileArray3D::index 已签名。我是否以错误的方式使用这些类型?或者有没有办法解决这个问题?我应该将index 转换为size_type 吗?还是会出现问题?
先谢谢了,嗯。
【问题讨论】:
标签: c++ boost multidimensional-array integer boost-multi-array