如何清除/清空C++数组?Theres array::fill,但看起来只是它的C++ 11?我正在使用VC++ 2010.如何清空它(重置为全0)?
Rei*_*ica 24
std::fill_n(array, elementCount, 0);
Run Code Online (Sandbox Code Playgroud)
假设array是一个正常的数组(例如int[])
假设C样式的数组a大小N,具有可隐式转换的类型0的元素,下面将所有元素设置为从中构造的值0.
std::fill(a, a+N, 0);
Run Code Online (Sandbox Code Playgroud)
请注意,这与"清空"或"清除"不同.
编辑:按照詹姆斯坎泽的建议,在C++ 11中你可以使用更惯用的替代方案
std::fill( std::begin( a ), std::end( a ), 0 );
Run Code Online (Sandbox Code Playgroud)
在缺少C++ 11的情况下,您可以沿着这些方向推出自己的解决方案:
template <typename T, std::size_t N> T* end_(T(&arr)[N]) { return arr + N; }
template <typename T, std::size_t N> T* begin_(T(&arr)[N]) { return arr; }
std::fill( begin_( a ), end_( a ), 0 );
Run Code Online (Sandbox Code Playgroud)