c++ - 如何从STL vector 中最小元素的迭代器位置获取int/size_t值?

标签 c++ stl

    std::vector<bool> reprVectors::encode(std::vector<float> input){
    std::vector<float> distance;
    for(size_t i=0;i<this->reprVectorsList.size();i++){
            distance.push_back(distBtw(input,this->reprVectorsList[i]));
    }
    std::vector<float>::iterator it= min_element(distance.begin(),distance.end());

    return this->reprVectorsList[it]->code;
}


float reprVectors::distBtw(std::vector<float> input, Node* node){
    double distance=0;
    for(size_t i=0;i<node->valuesInDim.size();i++){
        distance = distance +
                    pow((node->valuesInDim[i]-input[i]),2);
    }
    return (float)pow(distance,0.5);
}

it 迭代器给我距离 vector 中的最小距离。 如何在我的 reprVectorList 中找到相应的位置? 如何从 min_element 返回的迭代器中获取 int/size_t 值?

最佳答案

您可以使用 std::distance :

auto index = std::distance(distance.begin(), it);

这种方法有利于对迭代器执行算术运算,因为它对所有运算符类型都有效。

关于c++ - 如何从STL vector 中最小元素的迭代器位置获取int/size_t值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049991/

相关文章:

c++ - C 中 std::pair 的等价物

c++ - 从/向二进制文件读取/写入十六进制字节

c++ - 应用于 C++ 中对象列表的类似 Strcmp 的行为

C++ 文件解析器/stdin 输入——这个算法行得通吗?

c++ - 为什么我不能用 Qt5/C++ 解析 Cryptsy JSON API?

c++ - 在 C++ 中填充图像周围黑色边框的最有效方法

c++ - 将集合插入/读取到 map 中

C++容器按键和值搜索

c++ - STL 中的 find() 与 binary_search()

c++ - Netbeans c/c++ 远程执行