加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 将现有阵列归零的最快方法是什么?

发布时间:2020-12-16 09:39:31 所属栏目:百科 来源:网络整理
导读:我有一个现有的1D阵列,是memset以零的最快方式吗? 解决方法 最快…可能是的. 越野车几乎可以肯定! 它主要取决于实现,平台和……数组包含的类型. 在C中,当定义变量时,将调用其构造函数.定义数组时,将调用所有数组元素的构造函数. 擦除内存可以被认为是“好
我有一个现有的1D阵列,是memset以零的最快方式吗?

解决方法

最快…可能是的.
越野车几乎可以肯定!

它主要取决于实现,平台和……数组包含的类型.

在C中,当定义变量时,将调用其构造函数.定义数组时,将调用所有数组元素的构造函数.

擦除内存可以被认为是“好的”仅适用于已知数组类型具有可以由全零表示的初始状态并且默认构造函数不执行任何操作的情况.

对于内置类型,这通常是正确的,但对于其他类型也是如此.

最安全的方法是使用默认的初始化临时值分配元素.

template<class T,size_t N>
void reset(T* v)
{
    for(size_t i=0; i<N; ++i) 
        v[i] = T();
}

请注意,如果T为char,则函数将实例化并完全转换为memset.所以速度相同,不多也不少.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读