gpt4 book ai didi

c++ - 在 C++ 中使用 std::vector 对象是否可以接受,还是应该使用替代方法?

转载 作者:IT老高 更新时间:2023-10-28 12:58:44 24 4
gpt4 key购买 nike

我正在使用用户定义的位数(我持有一个 3 维位数组,因此大小按立方增加 - 假设不少于 512 位),并且需要分别翻转它们。现在,我只是在电脑上使用 bool类型,因为内存不是问题。我确实计划将来将代码移至微 Controller ,因此处理能力和内存要求可能是一个问题。不过现在,我只想要速度。

然后我找到了std::bitset来自 C++ STL 的对象,但我无法在运行时定义位集的大小。然后我发现 std::vector<bool>有一个特殊的初始化程序将它们存储为位(而不是整个字节,或 4 个字节),但后来发现 this section在维基百科中:

The Standard Library defines a specialization of the vector templatefor bool. The description of this specialization indicates that theimplementation should pack the elements so that every bool only usesone bit of memory. This is widely considered a mistake. [...] There is a general consensus among the C++ Standard Committee and the Library Working Group that vector<bool> should be deprecated and subsequently removed from the standard library, while the functionality will be reintroduced under a different name.

现在,您可能会看到我想要使用 vector<bool>对象,但在阅读之后,我正在考虑使用其他东西。唯一的问题是我不确定要使用 什么。我很好奇为什么他们说应该重新引入功能(尽管使用不同的名称)。

所以,我的问题是,使用 vector<bool>对象是否可以接受(因为它们是 STL 的一部分)?它们是 C++ 标准的一部分吗?

如果它们的使用 Not Acceptable ,是否有可接受的替代解决方案(在我之外自己定义一个特殊容器)?我自己有一些想法,但我只是好奇是否有人有更好的解决方案。另外,我想避免使用大型库(同样,我希望最终将此代码移植到微 Controller )。

最佳答案

In "Effective STL," Item 18 , Scott Meyers 推荐:“避免使用 vector 。”:

As an STL container, there are really only two things wrong with vector< bool >. First, it's not an STL container. Second, it doesn't hold bools. Other than that, there's not much to object to.

关于c++ - 在 C++ 中使用 std::vector<bool> 对象是否可以接受,还是应该使用替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6781985/

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