基于其他信息的C 排序索引
C++ sorting indices based on other information
说我有一个顶点列表: std::vector<vec3> vertices
和索引列表: std::vector<unsigned int>
。然后,我想用std::sort
对这些索引进行排序,而不是基于索引的大小,而是基于它们指向的顶点坐标。这就是我的意思:
std::sort(indices.begin(), indices.end(),
[](unsigned int indexA, unsigned int indexB) {
return vertices[indexA].x < vertices[indexB].x;
});
在一个完美的世界中,以下将根据指向的顶点的x坐标对索引进行分类。但是,这不是Lambda功能的工作方式,我无法访问vertices
信息。
有没有办法在上面说明的方式中使用std::sort
?还是我最好使用键值数据结构/实现自己的气泡排序?
您只是错过了捕获的捕获,这是lambda的捕获部分中的简单&
。
std::sort(indices.begin(), indices.end(),
[&](unsigned int indexA, unsigned int indexB) {
return vertices[indexA].x < vertices[indexB].x;
});
在这里如何工作:http://en.cppreference.com/w/cpp/language/lambda
相关文章:
- 如何根据排序索引的向量对 std::index 集进行排序?
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- 排序谓词没有传递对索引对象的引用?
- 如何在对向量排序后更改索引值?c++
- 在不进行排序的情况下查找数组中n个最小值的索引
- 如何解决索引和排序问题
- 使用C++中的排序对索引进行排序
- 如何使equal_range迭代器在 Boost 多索引中按不同的索引排序?
- 为什么我的代码没有对数组中第二个索引上的数据进行排序?
- 根据某些条件对索引子集进行排序
- 如果我将索引变量更改为零,并且合并函数中的k = 0,则获得合并排序的错误结果
- 如何对同一数组索引下的结构成员进行排序?
- 如何在保留原始索引的同时对向量的向量进行排序
- 如何获取向量的排序索引
- 基于其他信息的C 排序索引
- 如何将未排序数组的排序索引放入新数组中
- boost多索引排序索引中插入的匹配函数
- c++就地排序索引文件(使用堆排序)
- C++快速排序索引0返回-842150451
- 快速排序索引问题