找出vector里与我输入的值差值最小的值(数组可能存在多个值相同)
时间: 2024-03-20 13:42:50 浏览: 21
可以使用以下代码找到与输入值差值最小的值:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
vector<int> arr = {1, 3, 5, 7, 9};
int target = 6; // 假设输入的目标值为6
int min_diff = INT_MAX;
int result = -1;
for (int i = 0; i < arr.size(); i++) {
int diff = abs(arr[i] - target);
if (diff < min_diff) {
min_diff = diff;
result = arr[i];
}
}
cout << "与目标值最接近的值为:" << result << endl;
return 0;
}
```
上述代码中,我们遍历了整个数组,计算每个元素与目标值之间的差值,然后找到差值最小的元素并将其保存到result变量中,最后输出result即可。
相关问题
找出vector里与我输入的值差值最小的值的下标(存在多个)
好的,我可以为您解答这个问题。假设您有一个vector叫做vec,其内部包含了一些数字。您想要找出vec中与您输入的数字差值最小的数字的下标(可能存在多个),可以按照以下步骤进行:
1. 首先,您需要读入一个数字,假设它为x。
2. 然后,您可以遍历vec中的每个数字,并计算每个数字与x的差值。可以使用abs()函数来计算绝对值。
3. 找出差值最小的数字。可以使用一个变量min_diff来记录当前差值的最小值,并使用一个变量min_index来记录当前最小值所在的下标。初始时,可以将min_diff赋值为一个较大的数,例如INT_MAX。
4. 如果有多个数字的差值都等于min_diff,那么将它们的下标都记录下来。可以使用一个vector来保存这些下标。
下面是一段C++代码,可以实现上述功能:
```c++
#include <iostream>
#include <vector>
#include <cmath>
#include <climits>
using namespace std;
int main() {
vector<int> vec = {1, 3, 5, 7, 9}; // 假设vec里包含这些数字
int x = 6; // 假设输入的数字为6
int min_diff = INT_MAX;
int min_index = -1;
vector<int> min_indices;
for (int i = 0; i < vec.size(); i++) {
int diff = abs(x - vec[i]); // 计算差值
if (diff < min_diff) {
min_diff = diff;
min_index = i;
min_indices.clear(); // 清空之前保存的下标
}
if (diff == min_diff) {
min_indices.push_back(i); // 保存多个相同的下标
}
}
cout << "与" << x << "差值最小的数字是:" << vec[min_index] << endl;
cout << "它的下标是:" << min_index << endl;
if (min_indices.size() > 1) {
cout << "还有其他数字与它的差值相同,它们的下标是:";
for (int i = 0; i < min_indices.size(); i++) {
cout << min_indices[i] << " ";
}
cout << endl;
}
return 0;
}
```
希望这个回答能够帮到您!
cpp 找出vector<int>数组中最大值
可以使用`std::max_element`函数来找出`vector<int>`数组中的最大值,示例代码如下:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> arr = {1, 3, 5, 2, 4};
auto max = std::max_element(arr.begin(), arr.end());
std::cout << "The max element is " << *max << std::endl;
return 0;
}
```
这段代码首先定义了一个`vector<int>`类型的数组`arr`,然后使用`std::max_element`函数找出了数组中的最大值,并使用`std::cout`输出了结果。注意`std::max_element`函数返回的是一个指向最大元素的迭代器,需要使用`*`操作符获取最大值。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)