0

std::inner_product用来计算 2 中公共前缀的长度strings

string a = "abcdef", b = "abc";
size_t r = std::inner_product(a.begin(), a.end(), b.begin(), size_t(0),
                              [] (size_t v1, size_t v2) { return v1 + v2; }, 
                              [] (char c1, char c2) { return size_t(c1 == c2); });   

我希望它的大小a小于b. 如果大小大于
大小,为什么它会起作用? 这是一个标准实现(无效,但仍然可以):ab
first2first1

    template<class InputIt1, class InputIt2, class T>
    constexpr // since C++20
    T inner_product(InputIt1 first1, InputIt1 last1,
                                    InputIt2 first2, T init)
    {
            while (first1 != last1) {
                     init = std::move(init) + *first1 * *first2; // std::move since C++20
                     ++first1;
                     ++first2;
            }
            return init;
    }

这是未指明行为的情况吗?
std::inner_product

4

0 回答 0