C++ 可以用STL算法重写我的代码吗?
我有一个嵌套循环,我希望用STL算法重写它。有人能帮我吗C++ 可以用STL算法重写我的代码吗?,c++,stl-algorithm,C++,Stl Algorithm,我有一个嵌套循环,我希望用STL算法重写它。有人能帮我吗 std::bitset<array_size * 8> bitset {}; short bitsetIndex {0}; for (int i = 0; i < array_size; ++i) { std::bitset<8> cBitset { (unsigned char) charArray[i] }; for (int i = 0; i < cBitset.size(); +
std::bitset<array_size * 8> bitset {};
short bitsetIndex {0};
for (int i = 0; i < array_size; ++i) {
std::bitset<8> cBitset { (unsigned char) charArray[i] };
for (int i = 0; i < cBitset.size(); ++i) {
if(cBitset.test(i)) {
bitset.set(bitsetIndex);
}
bitsetIndex++;
}
}
return bitset;
std::位集位集{};
短比特集索引{0};
对于(int i=0;i
看起来您希望将charArray
表示为位的集合。一个简单的循环和几个位操作就可以完成这项工作:
using Bitset = std::bitset<array_size * 8>;
Bitset bitset;
for (auto i = array_size; i > 0; --i) {
bitset <<= 8;
bitset |= Bitset(static_cast<unsigned char>(charArray[i - 1]));
}
return bitset;
最后,如果您真的想使用一些标准库算法,您可以使用:
使用Bitset=std::Bitset我建议您添加一个算法的文本描述。请添加一个。什么是charArray
?
using Bitset = std::bitset<array_size * 8>;
Bitset bitset;
for (auto it = std::rbegin(charArray); it != std::rend(charArray); ++it) {
bitset <<= 8;
bitset |= Bitset(static_cast<unsigned char>(*it));
}
return bitset;
using Bitset = std::bitset<array_size * 8>;
return std::accumulate(std::rbegin(charArray), std::rend(charArray), Bitset{},
[](Bitset bs, auto ch) { return (bs << 8) |
std::bitset<array_size * 8>(static_cast<unsigned char>(ch));
});