获取与特定模式距离最小的矢量的元素位置
get elements positions of a vector with minimal distance from a certain pattern
有一个字符串 strvec 和一个模式字符串的向量,我尝试沿着 strvec 进行模糊搜索,以获得与模式最小距离 + 一定公差 (tol) 的所有元素位置。 从几何上讲,我想在圆圈中获取半径等于 : 与 strvec+tol 的最小距离的单词。所以我的算法应该得到:
- 元素位置与 strvec minimal_distance(如果 strvec 包含模式,算法应继续搜索以获得与零不同的最小距离。
- 距离 的所有元素位置
我假设距离是使用函数get_distance计算的。
这是我的代码:
vector<int> dist_minimal(const char* pattern, vector<string> strvec,int tol=4)
{
std::vector<int> v;
int min = 100; // big value to init
for (vector<string>::iterator it = strvec.begin(); it != strvec.end() ; it++){
int lev_dist=get_distance(pattern, *it);
auto position = it-strvec.begin()+1 ;
if(lev_dist < min && lev_dist >0){
v.clear();
v.push_back(position);
min = lev_dist;
std::cout << min << std::endl;
}else if (lev_dist == min){
v.push_back(position);
}
}
return v;
}
我只得到完全等于最小距离的元素,没有 min_distance 和 min_distance+tol 之间的元素。
你能改变吗
else if (lev_dist == min)
{
v.push_back(position);
}
自
else if ((lev_dist <= (min + tol)) && (lev_dist >= (min - tol)))
{
v.push_back(position);
}
相关文章:
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 求最大元素位置的分治算法
- 如何将元素添加到向量的字符串位置
- 这个返回元素位置的基于循环的函数有什么问题?
- 如何通过保持第一个插入的位置来对列表中插入的其余元素进行排序?
- 数组中所有元素的最新最小元素的第五个位置
- 是否有任何优雅的方式来遍历元素位置可以更改的列表?
- 如何从几乎排序的链表中分离放错位置的元素?
- 如何获得相同数量的第一个和第二个元素以及它们在c++中各自的位置
- 在给定元素在螺旋上的位置的情况下,在二维数组中查找元素
- 这是查找向量中元素位置的合法方法吗?
- 用于在字符串(C )向量中找到元素位置的函数中的错误
- 如何比较和存储 2 个向量的数据元素位置
- 获取与特定模式距离最小的矢量的元素位置
- 最大 N 个等元素位置的 C++ 向量
- OpenCV 从矩阵中获取条件基最大元素位置
- 有没有一种方法可以从传递给排序的lambda中获取元素位置
- 标准::多集,跟踪插入的元素位置
- 在C++中指定数组声明中的元素位置
- 获取std::vector中的元素位置