C++ 编辑:边界框向量下标超出范围错误
编辑:我面临一个下标问题。我设法存储了所有要创建的边界框的尺寸,并尝试使用for循环在一行中创建边界框。在创建框时,我使用两个非零点3D向量作为参数,即C++ 编辑:边界框向量下标超出范围错误,c++,visual-studio,vector,bounding-box,C++,Visual Studio,Vector,Bounding Box,编辑:我面临一个下标问题。我设法存储了所有要创建的边界框的尺寸,并尝试使用for循环在一行中创建边界框。在创建框时,我使用两个非零点3D向量作为参数,即center和extent。但是在调试时,我得到了一个向量下标超出范围的错误。我在其他问题上尝试了推荐的解决方案,但不起作用。有什么想法吗 std::vector<cetuc::BoundingBox> ObjectBox; std::vector<cetuc::Point3D> cente
center
和extent
。但是在调试时,我得到了一个向量下标超出范围的错误。我在其他问题上尝试了推荐的解决方案,但不起作用。有什么想法吗
std::vector<cetuc::BoundingBox> ObjectBox;
std::vector<cetuc::Point3D> center;
std::vector<cetuc::Point3D> extent;
*center and extent are both non zero vectors*
for(int z=0;z<center.size();z++)
{
ObjectBox[z] = cetuc::BoundingBox(center[z], extent[z], cetuc::Point3D(0, 0, 0));
}
std::vector ObjectBox;
std::向量中心;
std::载体范围;
*中心和范围都是非零向量*
对于(int z=0;zI建议不要使用rand()并使用std库使用随机生成器进行均匀随机分布,您可以使用随机设备或使用chrono中的类来为生成器进行种子设定,以获得高精度时间因子。rand()
几乎已经过时,应该考虑弃用。这是这段代码中唯一的缺陷吗?因为在运行代码时,我没有得到任何边界框,这让我怀疑我是否在错误的循环中保留了任何内容或使用了错误的函数willuniform\u int\u distribution()
处理向量?据我所知,当向量包含数千个元素并产生有偏差的结果时,rand是不够的。但它应该确保它是一个无符号版本,因为您将从0开始索引数组。至于您在注释中提出的问题,我不确定,因为我没有时间进行测试或尝试您的代码;但有一件事向我突出,那就是使用了一个不受欢迎的函数调用,它有一个改进的方法,具有更好的实现,可以为您提供一个更随机的序列。