带有浮点索引的c++数组/向量
C++ array/vector with a float index
我今天注意到我可以给一个c++ Vector或Array一个Float值作为索引。(例如tab[0.5f]
)这个Float值将被转换成Int值,然后给出与tab[0]
相同的结果。
这种行为对我来说并不有趣,因为我正在寻找一种方法来以最快的方式访问对象,这取决于Float键。是否有可能保持访问速度的数组/矢量,与Float索引?
我知道我的键会有一个不准确的问题,但我希望我的Float值保持最大3位的精度。
一个Map<Float, Object>
可以做这项工作吗?我在c++参考文档中读到Map访问是"对数大小",这对我来说不太有吸引力。
谢谢你:)。
编辑:我需要将包含X个数共享顶点的网格M转换为包含X个数非共享顶点的网格M。顶点的索引是在M中设置的,我知道它是三角形模式。
我当前的算法是:
for i in M.indexes, i+3
取3个索引,并推导它们指向的顶点(得到三角形的3个顶点)
计算这些顶点的法线
检查,对于每一对{Vertex_i, Normal} (i之间1和3,我的3个顶点),如果我已经有这对夫妇存储,并采取相应的行动
…下一步
检查一对{顶点,正常},我使用数组[x][y][z]基于顶点的位置,这是一个浮点数,虽然我知道它不会超过3位数的精度。
使用unordered_map。find
方法的复杂度在平均情况下为常数,在最坏情况下为容器大小线性。
也就是说,在任何情况下,性能取决于输入(网格大小)及其特征,选择最佳解决方案的唯一方法是实现任何合理的并相互基准测试。在许多情况下,由于实现的特殊性/内在性,理论复杂性是无关紧要的。我的意思是,即使有人告诉std::vector<std::pair<float, mapped_value>>
在你的情况下会表现得更好,我也必须做一些测试来证明他是对的/错的
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '