如何从stl向量中的最小元素的迭代器位置获取int / size_t值?

时间:2012-06-15 11:38:25

标签: 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 iterator给出了距离向量中的最小距离。 如何在reprVectorList中找到相应的位置? 如何从min_element返回的iterator获取int / size_t值?

2 个答案:

答案 0 :(得分:6)

您可以使用std::distance

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

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

答案 1 :(得分:2)

你可以从这样的迭代器中获取“索引”:

size_t index = it - distance.begin();