【问题标题】:Is there std::memset equivalent for std::array?std::array 是否有 std::memset 等价物?
【发布时间】:2018-12-02 15:11:31
【问题描述】:

std::array 是否有等效的 memset?我认为memset 在将数组初始化为零时应该比在数组上循环时执行得更好。我搜索了一个std::array,但在网上找不到任何东西。

【问题讨论】:

  • 关键是你找不到memset,因为它不适用于任何非POD类型的T。这不仅适用于std::array<T, n>,而且适用于任何基于通用T 类型的容器。
  • @PaulMcKenzie 虽然可以有条件地启用基于std::is_pod<T>::valuememset 方法……(我应该指出is_pod 计划在C++20 中弃用。)

标签: c++ c++11 memset stdarray


【解决方案1】:

使用数组的fill() 方法,这就是它的用途。

如果你用0 填充它(例如对于整数),那么编译器可能会优化它(通常是这样,你可以查看生成的代码)。

【讨论】:

  • 如果在没有 std::array 更不用说 std::array::fill 的前现代 C++ 中,您可以使用来自 std::fillstd::fill 和一个好的实现将对不同类型的迭代器和值类型进行专门化,因此它可以非常有效。 (它也适用于std::array。)
猜你喜欢
  • 2015-11-03
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 2011-08-31
  • 1970-01-01
相关资源
最近更新 更多