c++ - 有没有办法总结数组的位位置?
问题描述
假设我有一个像 [1,2,3] 这样的数组,它们对应的位值是 [0001, 0010, 0011]
我想得到一个数组来记住它们的位位置出现为 ar[4] = {0,0,2,2}。
我能想出的唯一方法是使用bitset
'sto_string
将值传输到位串。然后使用stoi
迭代并添加到数组。这很复杂,有没有更好的方法来解决这个问题?
解决方案
我想你正在寻找这样的东西。我不确定你为什么需要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;
}
推荐阅读
- java - 使用 CXF 生成代码的 JAXB 绑定
- python - 从单个 df 派生多个 df,使得每个 df 没有 NaN 值
- google-cloud-data-fusion - 停止 Cloud Data Fusion 实例
- ruby-on-rails - Ruby on Rails:如何使用字符串作为主键创建对数据库表的引用
- etcd - OKD4.4 计算节点因“内部服务器错误”而失败
- html - VBA - XML Web 登录到 USGA GHIN 网站 - 不工作
- azure-devops - Azure 管道变量默认值
- java - 设置超过 100 个具有不同值的对象
- google-bigquery - 更改 bigquery 中的列值
- awk - 如何并排打印输出?