簡體   English   中英

位集的C ++向量傳遞給函數

[英]c++ vector of bitset pass to a function

我想在C ++中實現一種算法,該算法需要動態分配的巨大位集向量(512x18,000,000位-我有16Gb RAM)。

a)這很好

int nofBits=....(function read from db);
vector < bitset <nofBits> > flags;
flags.resize(512);

但是如何將其(通過引用)傳遞給函數? 請記住,我在編譯時不知道nofBits。

我可以用一個

vector<vector<bool> > 

但是在內存使用方面會不會更糟?

我最近遇到了同樣的問題,但是就像std :: array一樣,您需要在編譯時知道位集的大小,因為它是模板參數。 我找到了boost :: dynamic_bitset作為替代方案,它像一個魅力一樣起作用。

std::vector<bool>專門用於有效地使用內存。 它的空間效率大致與std::bitset<N> (一些額外的字節,因為它的大小是動態的,並且位在堆上)。

但是請注意, std::vector<bool>存在問題 ,因此請輕踩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM