Alternative to vectorlt;boolgt;(替代 vectorbool)
问题描述
正如(希望如此)我们都知道的那样,vector
完全被破坏,不能被视为 C 数组.获得此功能的最佳方法是什么?到目前为止,我想到的想法是:
As (hopefully) we all know, vector<bool>
is totally broken and can't be treated as a C array. What is the best way to get this functionality?
So far, the ideas I have thought of are:
- 改用
vector
,或 - 使用包装类并具有
vector
你们是如何处理这个问题的?我需要 c_array()
功能.
How do you guys handle this problem? I need the c_array()
functionality.
作为一个附带问题,如果我不需要 c_array()
方法,如果我需要随机访问,解决这个问题的最佳方法是什么?我应该使用双端队列还是其他什么?
As a side question, if I don't need the c_array()
method, what is the best way to approach this problem if I need random access? Should I use a deque or something else?
- 我确实需要动态调整大小.
- 对于那些不知道的人,
vector
是专门的,因此每个bool
占用 1 位.因此,您无法将其转换为 C 风格的数组. - 我想包装器"有点用词不当.我在想这样的事情:
- I do need dynamic sizing.
- For those who don't know,
vector<bool>
is specialized so that eachbool
takes 1 bit. Thus you can't convert it to a C-style array. - I guess "wrapper" is a bit of a misnomer. I was thinking something like this:
当然,由于可能的对齐问题,我必须读入 my_bool
:(
Of course, then I have to read into a my_bool
due to possible alignment issues :(
struct my_bool
{
bool the_bool;
};
vector<my_bool> haha_i_tricked_you;
推荐答案
使用 std::deque
如果你不需要数组,是的.
Use std::deque
if you don't need the array, yes.
否则使用不专门用于 bool
的替代 vector
,例如 Boost 容器.
Otherwise use an alternative vector
that doesn't specialize on bool
, such as the one in Boost Container.
这篇关于替代 vector<bool>的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:替代 vector<bool>
基础教程推荐
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 从 std::cin 读取密码 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01