我有一个容器,它存储来自源的双值,我需要找到数字在特定顺序/模式中出现时的位置。
vector<double> m = {-0.15,0.2,-0.2,-0.1,0.5,-0.15,-0.8,0.35,-0.2,-0.35......nth}
有没有办法找到数字的位置,如果按顺序出现(按顺序),如:
m[x] = 0.1 to 0.5 //value of m[x] must between those two values
m[x+1] = 0.35 to 0.7 //anywhere between the range
m[x+2] = -0.1 to 0.1 // "
m[x+3] = 0.0 to.03 // "
答案 0 :(得分:3)
您的模式将包含范围,如果LHS双精度位于RHS范围内,则需要自定义二元谓词返回true。
未经测试的例子:
using Range = std::pair<double,double>;
std::vector<Range> pattern {{0.1, 0.5}, {0.35, 0.7}, {-0.1, 0.1}, {0.0, 0.03}};
auto match = std::search(begin(m), end(m),
begin(pattern), end(pattern),
[](double d, Range r) {
return (r.first < d) && (d < r.second);
});
为您的双重比较等添加适当的epsilon等。