相关疑难解决方法(0)

std :: fill不会变成POD类型的memset

我期待一个连续容器上的std :: fill,比如说std :: vector,会自动编译成memset的调用.但是,当我尝试以下代码时

#include <vector>
#include <algorithm>
#include <numeric>

using namespace std;

int main()
{
    vector<double> vec(300000);

    fill(vec.begin(),vec.end(),0.0);

    memset(&vec[0],0,vec.size()*sizeof(double));
}
Run Code Online (Sandbox Code Playgroud)

gcc将第一个std :: fill编译成一个简单的循环.但我认为可以通过SSE或其他高级矢量化代码来完成.请给我一个提示.谢谢.

c++

12
推荐指数
2
解决办法
4277
查看次数

标签 统计

c++ ×1