【发布时间】:2019-07-28 00:23:22
【问题描述】:
我需要找到至少五个float 值(不包括任何零)及其在顺序中的位置。
要使用这段代码的数据量会很大,需要快速处理。这将在处理输入24*7 的服务器中。最小值必须最终在数据库中更新。
在内存和时间使用方面,以下哪种方法会更快,或者如果有任何其他更简单的方法,请告诉我。
-
用
tuple专门化std::max。有四个元组值 表示<value,location>。例子,
std::tuple<float,int> f1 (10,1); bool less(float x, float y) { if (x!=0 && x < y) return 0; else return 1; } tuple min (std::initializer_list<tuple> il, bool comp){ what do I do here for initializer list? } int main () { out << get<1>(min({f1,f2,f3,f4,f5},less)); } - 如上使用
std::min_element并重载less 运算符? 使用float的迭代器会不会有点矫枉过正?
【问题讨论】:
-
要使用这段代码的数据量会很大 -- “巨大”是多少?当您说您只想要至少 5 个值时,您所说的“巨大”是什么意思?您想要大型数据集中 5 个值中的最小值吗?如果是这样的话,你XY-ing你的方法有这个问题。
-
对不起,又编辑了我的帖子。
-
还不清楚。忘掉你的方法吧——你会得到很多数据吗?当你读取这些数据(从文件、流等)时,你想知道最小的 5 个值是多少?
-
所有值都为0的结果是什么?
-
正如所写,这个问题不够精确,无法得到任何有意义的答案。