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);
}
Run Code Online (Sandbox Code Playgroud)
it iterator给出了距离向量中的最小距离.如何在reprVectorList中找到相应的位置?如何从min_element返回的iterator获取int/size_t值?
你可以使用std :: distance:
auto index = std::distance(distance.begin(), it);
Run Code Online (Sandbox Code Playgroud)
这种方法有利于对迭代器执行算术运算,因为它对所有运算符类型都有效.
| 归档时间: |
|
| 查看次数: |
3609 次 |
| 最近记录: |