1 获取std::vector中的最小值、最大值以及对应的索引
1.1 普通方法
普通方法就是遍历std::vector,对vector中的值进行一一对比,找出最小值、最大值及其对应的索引,示例代码如下
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<float> example_vector = {1.3,0.5,3.2,4.5,6.5,8.9,6.2,10.7,2.3};
// 找出最小值以及最小值索引
float min_value = std::numeric_limits<float>::max();
int min_value_index = -1;
for (int i = 0; i < example_vector.size(); ++i)
{
if (example_vector[i] < min_value)
{
min_value = example_vector[i];
min_value_index = i;
}
}
std::cout << "min_value_index = " << min_value_index << ", min_value = " << min_value << std::endl;
// 找出最大值以及最大值索引
float max_value = std::numeric_limits<float>::min();
int max_value_index = -1;
for (int i = 0; i < example_vector.size(); ++i)
{
if (example_vector[i] > max_value)
{
max_value = example_vector[i];
max_value_index = i;
}
}
std::cout << "max_value_index = " << max_value_index << ", max_value = " << max_value << std::endl;
return 0;
}
程序输出:
min_value_index = 1, min_value = 0.5
max_value_index = 7, max_value = 10.7
1.2 使用algorithm
我们可以使用algorithm
中的std::min_element
和std::max_element
的方法获取最大值最小值,然后使用std::distance
获取迭代器对应的在std::vector
中的索引,示例代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<float> example_vector = {1.3,0.5,3.2,4.5,6.5,8.9,6.2,10.7,2.3};
// 找出最小值
std::vector<float>::iterator smallest = std::min_element(example_vector.begin(), example_vector.end());
float min_value = *smallest;
// 获取最小值索引
int min_value_index = std::distance(example_vector.begin(), smallest);
std::cout << "min_value_index = " << min_value_index <<", min_value = "<< min_value << std::endl;
// 找出最大值
std::vector<float>::iterator biggest = std::max_element(example_vector.begin(), example_vector.end());
float max_value = *biggest;
// 获取最大值索引
int max_value_index = std::distance(example_vector.begin(), biggest);
std::cout << "max_value_index = " << max_value_index << ", max_value = " << max_value << std::endl;
return 0;
}
程序输出:
min_value_index = 1, min_value = 0.5
max_value_index = 7, max_value = 10.7
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – 获取std::vector中的最小值、最大值以及对应的索引
原文链接:https://www.stubbornhuang.com/2561/
发布于:2023年03月23日 15:51:06
修改于:2023年06月21日 16:53:07
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50