一如既往,当您询问最快的速度时:测量!使用上述方法(在使用Clang的Mac上):
Method      |  executable size  |  Time Taken (in sec) |
            |  -O0    |  -O3    |  -O0      |  -O3     |  
------------|---------|---------|-----------|----------|
1. memset   | 17 kB   | 8.6 kB  | 0.125     | 0.124    |
2. fill     | 19 kB   | 8.6 kB  | 13.4      | 0.124    |
3. manual   | 19 kB   | 8.6 kB  | 14.5      | 0.124    |
4. assign   | 24 kB   | 9.0 kB  | 1.9       | 0.591    |
在10000个整数的向量上使用100000次迭代。
编辑:如果振振有词量变到质变这一数字变化所产生的时候,你可以有一些信心(还不如检查最终汇编代码),人工基准尚未完全优化掉。当然,最好在实际条件下降低性能。
结束编辑 
作为参考,使用的代码: 
#include <vector>
#define TEST_METHOD 1
const size_t TEST_ITERATIONS = 100000;
const size_t TEST_ARRAY_SIZE = 10000;
int main(int argc, char** argv) {
   std::vector<int> v(TEST_ARRAY_SIZE, 0);
   for(size_t i = 0; i < TEST_ITERATIONS; ++i) {
   #if TEST_METHOD == 1 
      memset(&v[0], 0, v.size() * sizeof v[0]);
   #elif TEST_METHOD == 2
      std::fill(v.begin(), v.end(), 0);
   #elif TEST_METHOD == 3
      for (std::vector<int>::iterator it=v.begin(), end=v.end(); it!=end; ++it) {
         *it = 0;
      }
   #elif TEST_METHOD == 4
      v.assign(v.size(),0);
   #endif
   }
   return EXIT_SUCCESS;
}
结论:使用std::fill(因为正如其他人所说的是最惯用的)!