c++中min()函数的代码案例
时间: 2024-10-11 16:13:28 浏览: 39
在C++中,`std::min()` 函数是 `<algorithm>` 头文件中的一个标准库函数,它用于返回两个输入值中的较小者。这个函数接受任意类型的两个参数,并返回其中最小的一个。下面是一个简单的代码示例:
```cpp
#include <iostream>
#include <algorithm> // 包含 min() 函数
int main() {
int a = 5;
int b = 10;
int smallest = std::min(a, b); // 使用 std::min 获取最小值
std::cout << "The smaller number is: " << smallest << std::endl; // 输出结果
double c = 4.5;
double d = 3.7;
double smallestDouble = std::min(c, d); // 也可以处理浮点数
std::cout << "The smaller floating-point number is: " << smallestDouble << std::endl;
return 0;
}
```
在这个例子中,`std::min()` 被用于比较整型 `a` 和 `b` 的大小,以及浮点型 `c` 和 `d` 的大小。注意,`std::min()` 可以应用于可以比较大小的所有数据类型。
相关问题
C++ 根据welzl算法点集最小包围球具体代码案例
Welzl算法是一种用于计算凸包(即最小包围球)的随机算法,适用于不规则的点集。在C++中实现这个算法,首先需要一些基础数据结构,如动态数组或者向量来存储点集,以及一个辅助随机函数。
以下是 Welzl 算法的一个简化版的C++代码示例:
```cpp
#include <vector>
#include <random>
// 定义一个表示二维点的结构体
struct Point {
double x, y;
};
// 辅助函数,返回一个随机生成的点索引
int random_index(const std::vector<Point>& points) {
static std::mt19937 generator(std::random_device{}()); // 使用Mersenne Twister随机数生成器
return generator() % points.size();
}
// Welzl's Algorithm
Point find_minsphere(const std::vector<Point>& points) {
if (points.empty()) return {0, 0}; // 如果点集为空,返回原点
Point center = points[random_index(points)]; // 随机选择一个初始中心
double max_radius = 0;
while (true) {
// 计算当前中心到所有点的距离
double new_radius = std::distance(points.begin(), std::min_element(points.begin(), points.end(),
[center](const Point& a, const Point& b) { return distance_squared(a, center) < distance_squared(b, center); }));
// 如果新半径小于等于旧半径,说明找到了新的包围球中心
if (new_radius <= max_radius) break;
center = points[random_index(points)];
max_radius = new_radius;
}
return center; // 返回找到的最小包围球中心
}
double distance_squared(const Point& p1, const Point& p2) {
return pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2);
}
int main() {
std::vector<Point> points = {{1, 2}, {3, 4}, {5, 6}, {7, 8}}; // 示例点集
Point minsphere_center = find_minsphere(points);
std::cout << "Minimum sphere center: (" << minsphere_center.x << ", " << minsphere_center.y << ")\n";
return 0;
}
```
请注意,实际应用中可能需要对上述代码进行优化,比如使用迭代而不是while循环,并处理边界情况。此外,`std::min_element`在这里只用于演示目的,实际生产环境中可能需要自行实现。
阅读全文