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(*开始,*分钟))
最小=开始;
返回最小值;
}

这方面可能的实现方式是什么,您已经尝试过了吗?