将"size_t[]"强制转换为"char*",不使用C样式强制转换或"



为了计数size_t[n]中的设置位,我创建了一个LUT[256],其中每个字节预先计算了设置位的数量。

要使用std::accumulate并迭代const size_t[n]中的每个字节,需要转换为const char *

C中,(const char *)arrSizet将起作用。在C++中,我可以使用以下选项之一:

  1. reinterpret_cast<const char *>(arrSizet)
  2. char arrChar[BYTES_IN_SIZET_ARR]; memcpy(arrChar, arrSizet, BYTES_IN_SIZET_ARR);

C样式的强制转换或使用reinterpret_cast(1(通常应尽可能避免
While(2(不必要地复制数组。

那么,有没有更好的方法来完成这项工作呢?也许是一种将字节数组发送到std::accumulate而不进行任何强制转换的方法?

在c++中,强制转换有时是必要的,它不应该被轻视。Memcpy是一种比石膏更危险的操作。在你的情况下,有一些方法可以绕过铸造,方法是让你自己积累,并使用逐位运算求和,但c++的核心是为铸造之类的东西而设计的。

最新更新