From: Roy S. <roy...@ic...> - 2018-05-02 21:20:28
|
On Wed, 2 May 2018, Derek Gaston wrote: > I'll add one more reason to hate std::vector<bool>: threading. Yikes, I forgot that! Glad I added you all to the Cc; thanks! > std::vector<bool> is not at _all_ thread safe: multiple processors working on the > same vector will clobber each other's values. Assuming by "working on" you mean "writing to", then yeah: "Notwithstanding (17.6.5.9), implementations are required to avoid data races when the contents of the contained object in different elements in the same container, excepting vector<bool>, are modified concurrently." You're supposed to still be able to read in multiple threads concurrently just fine, though. > I personally wish they had made std::vector<bool> take 8 times more > memory... and then let you use something else if you needed the > optimization... but that's just me. You, and Hinnant... and honestly I agree too, just not quite as strongly. I'm deeply opposed to the "resizeable bitsets shouldn't exist" attitude I see sometimes, but "resizeable bitsets shouldn't have been named std::vector" is pretty hard to argue with. --- Roy |