说我有一个像[1,2,3]的数组,它们对应的位值为[0001,0010,0011]
我想获得一个数组来记住它们的位位置,如ar [4] = {0,0,2,2}。
我提出的唯一方法是使用bitset
的{{1}}将值传输到位字符串。然后使用to_string
进行迭代并添加到数组中。这很复杂,有没有更好的方法可以通过位操作来解决这个问题?
答案 0 :(得分:2)
我认为您正在寻找类似的东西。我不确定您为什么需要to_string
,除非我在您的描述中遗漏了一些东西。
#include <iostream>
#include <bitset>
#include <vector>
int main()
{
const int num_bits = sizeof(int) * 8;
std::vector<int> values = { 1,2,3 };
int result[num_bits] = {};
std::bitset<num_bits> bits;
for (size_t i = 0; i < values.size(); ++i)
{
bits = values[i];
for (int bit = 0; bit < num_bits; ++bit)
{
result[bit] += bits[bit];
}
}
for (auto num : result)
{
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}