Я ожидаю, что 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));
}
gcc скомпилировал первый std:: fill в простой цикл. Но я думаю, что это может быть сделано SSE или другим расширенным векторизованным кодом. Пожалуйста, дайте мне подсказку. Спасибо.