用C++创建一个巨大的标志图

ddo*_*nik 0 c++ flags

所以基本上,我需要的是有28,800个值可以通过索引访问,并且都可以设置为true或false.使用bool或整数数组不是一种选择,因为需要在朗姆酒时使用参数设置大小.使用矢量太慢而且内存密集.我是C++的新手,因此对如何解决这个问题一无所知,有人可以帮忙吗?

编辑:感谢所有评论的人!就像我说的,我是C++编程的新手,你的答案真的帮助我理解了向量背后的功能.因此,在每个人都说矢量不慢之后我再次检查,结果发现我的程序运行速度很慢,因为我在填充矢量时遇到了另一个错误.但特别是midor和一些程序员老兄的回答帮助我让程序比以前运行得更快,谢谢!

kay*_*kay 5

使用矢量太慢而且内存密集.

C++专门研究,std::vector<bool>因此它只使用所需的内存.每个"标志"一位(当然+ +簿记开销).

如果你知道它的大小是先验的(你不是根据你的问题),或者如果你知道位图只包含很少的设置位(例如50'000中的1位,但是你),你只能优化该实现.我需要衡量一个更复杂的实现是否值得).对于稀疏位图std::unordered_set<std::uint32_t>,存储设置位可以是一种选择.

但28'800是一个非常小的数字,所以不要浪费你的时间进行优化.你不会从中获得任何好处.