gpt4 book ai didi

c++ - 使用 unsigned int 而不是 std::vector 或 std::bitset 是推荐的做法吗?

转载 作者:行者123 更新时间:2023-11-30 02:31:41 36 4
gpt4 key购买 nike

我看过一些推荐使用 unsigned int 的编码示例表示位图:

unsigned int zero_rows {0};
for (auto i = 0; i < n_rows; ++i) {
zero_rows |= (1 << i);

}

这比使用 std::vector<bool> 有什么好处吗? :

std::vector<bool> zero_rows(n_rows, false);
for (auto i = 0; i < n_rows; ++i) {
zero_rows[i] = true;

}

我猜另一个选项可能是 std::bitset ,但我还不确定每种方法的优缺点。我只想知道推荐的做法是什么。

最佳答案

使用一些大小的无符号整数来表示一个在 1998 年标准之前,固定大小的位序列是 C++ 中的唯一选项,当时 std::vector<bool>std::bitset被介绍。这种做法继承自C,它被认为是合格程序员的熟练程度,并且在 C++ 中仍然如此。

std::vector<bool>已经被遗憾地看待了。参见例如 vector<bool> : More Problems, Better SolutionsEffective STL Item 18 . std:::bitset被认为符合目的。

无符号整数实践本质上代表了对固定大小的位序列由明显的技巧限制和复杂化事实上只有几种大小的无符号整数(即使选择尺寸精确)。如果您需要固定大小的位序列interfaceof std::bitset 支持的所有操作那么其他条件与标准库的规定相同出于所有原因,优于手动代码图书馆欠它的存在。

您必须判断在您的应用程序的上下文中是否还有其他事情是平等的。

关于c++ - 使用 unsigned int 而不是 std::vector<bool> 或 std::bitset 是推荐的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37363981/

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