- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
std::minmax_element
:返回一个对,该对由指向最小元素的迭代器作为第一个元素和指向最大元素的迭代器作为第二个元素组成。
std::min_element
:返回指向 [first, last) 范围内最小元素的迭代器。
std::max_element
:返回指向 [first, last) 范围内最大元素的迭代器。
std::minmax_element
是否使用完整列表的排序 来实现此目的?
从 std::minmax_element
处理返回对的开销是否足够?
最佳答案
您不必担心 std::minmax_element
进行任何排序。它以遍历的确切方式离开范围。它更高效的原因是它可以在一次遍历中同时找到最大值和最小值,而当分别查找最大值和最小值时,您必须进行两次完整遍历。
std::minmax_element
的复杂度为 max(floor(3/2(N−1)), 0)
其中 std::max_element
和 std::min_element
都是 max(N-1,0)
所以使用 std::minmax_element< 的操作减少了大约 25%/
还有一个区别,std::minmax_element
找到最后一个最大的元素,而 std::max_element
找到第一个最大的元素。
因此,如果您需要找到一个范围的最小值和最大值,那么您应该使用 std::minmax_element
。如果您只需要最小值或最大值,那么您应该使用专用版本。使用即将推出的 C++17 标准和结构化绑定(bind),处理来自 std::minmax_element
的返回值将变得更加容易。你将能够写
auto [min, max] = std::minmax_element(...);
现在该对的第一个元素存储在 min
中,第二个元素存储在 max
中。
关于c++ - 与 min_element 和 max_element 一起使用 minmax_element 是否有任何效率优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40283673/
可以std::min_element (还有 std::sort 和来自 的类似函数)用于仅具有偏序的类型? 例如: auto it = std::min_element(vec.cbegin(),
我在使用 C++ 算法 header 中的 min_element() 时遇到问题。 代码如下: int a[5] = {4, 1, 2, 3, 4}; for (int j = n - 1; j >
我正在尝试使用模板类构建一个自制的最小堆,以便我可以在 Dijkstra 或 Prim 上工作。然而,find_min() 函数不适用于 std::min_element()。任何线索将不胜感激。谢谢
我在我创建的这个具有索引的 Node 对象上使用 std::min_element。我有一个 std::set 容器,其中包含 10 个具有不同索引的节点,然后我调用 std::min_element
当我使用 std::min_element 时,我一直在为 C2440 编译错误而苦苦挣扎: struct compare_x_coordinate { bool operator() (Geoc
std::vector cMinDist; for (int i = 0; i temp; for (int j = 0; j ::iterator result =std:
我正在编写一个程序来使用 graham scan 计算凸包的周长并且需要在一组数据点中找到最低的 y 坐标。我正在使用 std::min_element(vector.begin(), vector.
std::min_element将返回由 operatorR 所针对的元素取最小值? 显然我可以定义 bool Pred(t1,t2) { return f(t1) < f(t2); }但当 f 是
我想找到一个 vector 的最小值: #include #include #include using namespace std; int main () { vector v{2,
如何保存 min_element 的值?它说它是一个前向迭代器,但我似乎无法弄清楚如何保存(分配给一个变量)它。我希望能够通过 vector 中的位置访问它。我所能找到的只是使用实际元素的示例(使用
我正在尝试找到 GPU 上数组的最小值。我可以在 cpu 上使用 min_element,但不知道如何在 gpu 上使用 min_element。我也很困惑为什么 min_element 的返回必须是
我正在尝试找到 GPU 上数组的最小值。我可以在 cpu 上使用 min_element,但不知道如何在 gpu 上使用 min_element。我也很困惑为什么 min_element 的返回必须是
假设给定一个二维点 vector ,并期望找到具有最少 Euclidean norm 的点. 点数以 std::vector points 形式提供。以下是 typedef std::pair poi
所以我有一个按以下方式定义和使用的结构 vector : enum ID { alpha, beta, gamma }; using TimePoint = std::chro
这是我的代码: #include #include #include using namespace std; class A { struct CompareMe { bool o
我正在写一个小例子来尝试理解 boost::signal 的多个返回值。然而,结果对我来说似乎很奇怪。 #include #include #include int func1() {
在这个问题的评论中is-there-a-way-to-iterate-over-at-most-n-elements-using-range-based-for-loop还有一个问题 - 是否可以在容
#include #include #include using namespace std; int main() { std::map A; const auto it =
我有一个 while 循环,它用一些 double 初始化一个 list。 我想输出最小值,但到目前为止我所做的似乎没有用,因为我没有得到任何输出。 这是我代码的相关部分: list allD
我正在优化 pycuda/推力程序。其中,我使用 thrust::min_element标识设备上数组中最小元素的索引。 使用 Nvidia 的可视化分析器,似乎每当我调用 thrust::min_e
我是一名优秀的程序员,十分优秀!