std::vector<bool>shot; for(int j = 0; j < 5; j++) shot[j]=1
时间: 2023-06-27 08:03:18 浏览: 215
这段代码有一个错误,因为 `std::vector<bool>` 是一个特化的容器类。它使用了位压缩技术,每个元素只占用 1 位空间。因此,你不能直接通过 `(int)` 或 `[]` 运算符来访问其中的元素。
如果你想要创建一个长度为 5 的 `std::vector<bool>`,并将其所有元素设置为 1,可以这样写:
```cpp
std::vector<bool> shot(5, true);
```
这里使用了 `std::vector` 的构造函数,第一个参数是容器的大小,第二个参数是每个元素的初始值。在这个例子中,容器的大小为 5,每个元素的初始值为 `true`。
相关问题
computePointSHOT (const int index, const std::vector<int> &indices, const std::vector<float> &sqr_dists, std::vector<bool> shot) = 0;
这是一个纯虚函数的声明,这意味着这个函数在当前类中没有实现,需要在子类中进行实现。该函数的作用是计算点云中某个点与一组索引(indices)给定的点之间的SHOT描述子(Shape Histograms of Oriented Points)。其中,index表示待计算SHOT描述子的点的索引,sqr_dists是待计算点与索引点之间的平方距离,shot是输出参数,表示计算出的SHOT描述子是否有效。
std::vector<bool>shot存储什么数据类型
`std::vector<bool>` 存储的是布尔值,每个元素占用一个比特位(bit),而不是一个字节(byte),这是为了节省空间。由于 `std::vector` 是一个动态数组,它可以自动扩展和收缩,因此 `std::vector<bool>` 可以保存任意数量的布尔值。但是需要注意的是,由于 `std::vector<bool>` 的实现方式比较复杂,它的使用有一些限制和注意事项,例如不能使用迭代器访问其中的元素。如果需要使用迭代器,建议使用 `std::vector<char>` 或者 `std::vector<int>` 等数据类型来代替。
阅读全文