向量C ++上的Memset

在C ++中,有没有memset等价函数?

(不clear()erase()方法,我想保留向量的大小,我只是想初始化所有的值。)

使用std::fill()

 std::fill(myVector.begin(), myVector.end(), 0); 

如果您的vector包含PODtypes,则使用memset是安全的 – vector的存储保证是连续的。

 memset(&vec[0], 0, sizeof(vec[0]) * vec.size()); 

编辑:对不起,抛出一个未定义的术语 – POD代表简单的旧数据 ,即在C中可用的types和从它们构build的结构。

再次编辑:正如在注释中指出的那样,即使bool是一个简单的数据types, vector<bool>也是一个有趣的exception,如果试图使用memset,将会失败。 在这种情况下, 亚当·罗森菲尔德的答案仍然完美。

另一种方式,我想我先看了一下梅耶斯的书:

 // Swaps with a temporary. vec.swap( std::vector<int>(vec.size(), 0) ); 

它唯一的缺点是它做了一个副本。