gpt4 book ai didi

c++ - 切换表示为字符的位的 3 种方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:06 25 4
gpt4 key购买 nike

我是这样写的:

#include <iostream>
#include <vector>

int main()
{
std::vector<char> v = {0, 0, 0};
v[0] = v[0] == 0 ? 1 : 0;
v[1] = !v[1];
v[2] ^= 1;
std::cout << (int)v[0] << (int)v[1] << (int)v[2] << "\n";
return 0;
}

它切换所有位,但我实际上只关心更改第 i 个位。

我感兴趣的是在 中应该使用这些方法中的哪一种?项目,当您唯一关心的是速度(而不是内存和可读性)时?


使用std::vector<char>的原因作为一个位集是 in my timings I found that it's faster than a vector of int s or char s, and std::bitset .

最佳答案

只要您对位感兴趣,您可以改用 std::bitset 或直接使用 bool 而非 char 的 vector :

#include <iostream>
#include <vector>

int main()
{
std::vector<bool> v = { 0, 0, 0 };

for (int i(0); i < v.size(); i++)
v[i] = !v[i];

for (int i(0); i < v.size(); i++)
std::cout << (int)v[i];

std::cout << std::endl;

std::cin.get();
return 0;
}
  • 推荐使用 按位非 !,因为它速度快且干净。

关于c++ - 切换表示为字符的位的 3 种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40818748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com