小编use*_*072的帖子

为什么 gcc 和 clang 为 std::find 生成这么多代码?

我在 godbolt.org 中输入以下代码,并使用 gcc 10.1 和 clang 10 编译它:

#include <algorithm>
#include <vector>

typedef std::vector<int> V;

template<class InputIt, class T>
InputIt myfind(InputIt first, InputIt last, const T& value) {
    for (; first != last; ++first) {
        if (*first == value) {
            return first;
        }
    }
    return last;
}

V::iterator my_find_int(V& v, int i) {
    return myfind(v.begin(), v.end(), i);
}

V::iterator std_find_int(V& v, int i) {
    return std::find(v.begin(), v.end(), i);
}
Run Code Online (Sandbox Code Playgroud)

使用-O3或 with -Os,两个编译器都会生成我所期望的内容my_find_int(gcc 10.1,-Os …

c++ gcc clang codegen

4
推荐指数
1
解决办法
177
查看次数

标签 统计

c++ ×1

clang ×1

codegen ×1

gcc ×1