【发布时间】:2019-11-18 00:36:31
【问题描述】:
我正在尝试从vector<vector<int>> 中找出最小的vector<int> 元素。
这是我的代码,但它对向量进行了两次迭代。
#include <iostream>
#include <vector>
#include <limits>
int main()
{
std::vector<std::vector<int>> foo = {{1,2,3,4}, {1,2}, {1,2,3,4,5}, {1,2,3}};
size_t smallestNumElems = std::numeric_limits<size_t>::max();
for (size_t i = 0; i < foo.size(); ++i)
{
const size_t numElems = foo[i].size();
if (smallestNumElems > numElems)
smallestNumElems = numElems;
}
for (size_t i = 0; i < foo.size(); ++i)
{
if (smallestNumElems == foo[i].size())
{
for (size_t j = 0; j < foo[i].size(); ++j)
std::cout << foo[i][j] << '\n';
break;
}
}
}
结果:
1
2
Program ended with exit code: 0
有没有更好的方法来获得相同的结果?
【问题讨论】:
-
std::min_element带有合适的lambda 用于比较器。 -
您可以存储一个指向最小 vec 的指针并使用它进行迭代。
标签: c++ algorithm vector minimum