向量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) );
它唯一的缺点是它做了一个副本。