C++ 如何编写自己的代码来替换'std::min_element',以查找向量中的最小值
我试图在C++ 如何编写自己的代码来替换'std::min_element',以查找向量中的最小值,c++,c++11,vector,stdvector,C++,C++11,Vector,Stdvector,我试图在std::vector容器中找到最小值 我知道std::min_元素工作正常。但是我正在为stm32芯片编码,它支持c++11。但是,交叉编译器在头方面存在一些问题 我想要一个清晰有效的方法来做到这一点 如有任何建议,将不胜感激 std::vector myVector=/*…*/; std::vector<int> myVector = /* ... */; int min = myVector[0]; for (auto itr = myVector.cbegin ();
std::vector
容器中找到最小值
我知道std::min_元素
工作正常。但是我正在为stm32芯片编码,它支持c++11
。但是,交叉编译器在
头方面存在一些问题
我想要一个清晰有效的方法来做到这一点
如有任何建议,将不胜感激 std::vector myVector=/*…*/;
std::vector<int> myVector = /* ... */;
int min = myVector[0];
for (auto itr = myVector.cbegin (); itr != myVector.cend (); itr ++)
{
if (*itr < min)
min = *itr;
}
int min=myVector[0];
对于(auto-itr=myVector.cbegin();itr!=myVector.cend();itr++)
{
如果(*itr
min
现在包含最小值
简单、有效、有效。迭代器是C++的一个强度。泛型<代码>::MyInEngs<代码>实现可能是这样的。它将迭代器返回到最小值,并为空范围返回
end
,并支持自定义比较器函数
template
<
typename ForwardIt,
typename Cmp = std::less<typename std::iterator_traits<ForwardIt>::value_type>
>
ForwardIt min_element(ForwardIt begin, ForwardIt end, Cmp cmp = Cmp{})
{
if (begin == end)
return end;
ForwardIt min = begin++;
for (; begin != end; ++begin)
if (cmp(*begin, *min))
min = begin;
return min;
}
模板
<
typename ForwardIt,
typename Cmp=std::less
>
ForwardIt最小元素(ForwardIt开始,ForwardIt结束,Cmp=Cmp{})
{
如果(开始==结束)
返回端;
ForwardIt min=开始++;
for(;begin!=end;++begin)
如果(cmp(*开始,*分钟))
最小=开始;
返回最小值;
}
这方面可能的实现方式是什么,您已经尝试过了吗?