如何返回向量中元素的索引
how to return index of element in vector
给定向量
vector<classX *> myVec;
如何返回其元素之一的索引CCD_ 1,如下函数所示;
size_t nearestElement(classY const& p){
size_t i(0);
double d = distance(myVec[i]->position(), p);
for (auto const& element : myVec){
if(distance(element->position(), p) < d){
i = ???; // the index of the current element
}
return i;
}
}
其中position()
是在classX
中定义的函数,distance
不是std::distance
函数,而是我定义自己的函数。
将基于的范围更改为常规的,或将索引变量添加到当前的for:
int index = 0;
for (auto const& element : myVec){
if(distance(element->position(), p) < d){
i = index; // the index of the current element
}
index++
...
&element - &myVec[0]
应该为具有连续数据的容器(如std::vector
)做到这一点。
如果你的distance
函数很便宜,你可以这样重写你的函数:
size_t nearestElement(classY const& p)
{
auto it = std::min_element(myVec.begin(), myVec.end(),
[&p](const classX* lhs, const classX* rhs) {
return distance(lhs->position(), p) < distance(rhs->position(), p);
});
return it - myVec.begin(); // Will return 0 if myVec is empty.
}
相关文章:
- 在对向量中查找元素的索引
- 当该数组的索引中没有元素时,指针指向什么?
- 如何在 STL 函数中找到传递给谓词的元素的索引?
- 如何在C++中递归地找到max元素的索引?
- 编译器(Visual C++)如何优化按索引访问矢量元素?
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- 使用推力根据索引更改某些元素的值
- 为什么 min_element() 返回最小元素的索引,而不是迭代器?
- CPtrList - 如何获取元素的索引?
- 获取结构 c++ 中元素的索引
- C++ STL 数据结构常时按索引推送/弹出/随机访问,并具有指向元素的可靠指针
- 矢量指针索引处的读取元素
- C++函数返回两个 char 数组的相同索引元素
- 特征:类似 numpy 的元素索引
- 如何在另一个数组中找到一个未排序数组的不同元素索引?
- C 无法使用嵌套环将数组的元素索引
- Opencv Mat的元素索引产生垃圾
- 在c++中,当元组的元素索引在运行时已知时,是否有可能获得该元素的类型?
- 按内容访问QVector元素索引
- C++ 矢量元素索引