可视化如何清除C 数组
visual How do I clear a C++ array?
我如何清除/空的C 数组?有 array::fill
,但看起来只像其C 11?我正在使用VC 2010。如何将其清空(重置为所有0)?
std::fill_n(array, elementCount, 0);
假设array
是普通数组(例如int[]
)
假设N
大小的C风格数组a
,具有从0
隐式转换的类型元素,以下将所有元素设置为0
。
std::fill(a, a+N, 0);
请注意,这与"清空"或"清除"。
edit :按照詹姆斯·坎兹(James Kanze)的建议,在C 11中,您可以使用更多的惯用替代方案
std::fill( std::begin( a ), std::end( a ), 0 );
在没有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 );
std::fill(a.begin(),a.end(),0);
for (auto& a : SomeArray) a = 0;
是否应该用 inninsic 值以外的其他内容填充数组, std :: fill in nong by dot by dot in of cut 相反,我发现 std ::生成有用。例如我有一个想初始化的列表向量
std::generate(v.begin(), v.end(), [] () { return std::list<X>(); });
您也可以执行INT,例如
std::generate(v.begin(), v.end(), [n = 0] () mutable { return n++; });
或只是
std::generate(v.begin(), v.end(), [] (){ return 0; });
但我想STD :: FILL对于最简单的情况
嘿,我认为处理这种操作的最快方法是memset()内存。
示例 -
memset(&myPage.pageArray[0][0], 0, sizeof(myPage.pageArray));
类似的C 方法是使用std :: fill
char *begin = myPage.pageArray[0][0];
char *end = begin + sizeof(myPage.pageArray);
std::fill(begin, end, 0);
如果仅为0,则可以使用 memset
:
int* a = new int[6];
memset(a, 0, 6*sizeof(int));
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用内存集清除字符数组
- 有没有办法在c ++中清除空数组,请检查下面的代码以获取说明
- 我可以清除外部声明为进一步使用的数组吗?
- 可视化如何清除C 数组
- 需要帮助删除加载的数组并将其从计数中清除
- 在赋值后清除C++中固定字符数组的内容
- 将零复制到 char 数组中也会清除其他 char 数组
- 创建和清除结构数组
- 如何清除堆上分配的未使用数组的整个内存
- 清除一个字符数组的最佳方案-是否为memset
- 当对象返回时,c++动态数组被清除
- 如何快速清除DWORD指针数组
- 清除任意2D数组
- 如何清除为指针正确指向的数组分配的内存C++?
- 如何清除动态数组在c++和多少是在堆栈上
- 如果使用非基本类型,清除泛型数组将抛出logic_error