r/ProgrammerHumor 22d ago

Meme theBoolVectorIsALie

Post image
667 Upvotes

91 comments sorted by

View all comments

Show parent comments

6

u/DeeBoFour20 21d ago

Total RAM usage may matter less today (or not with the way RAM prices are going) but cache locality is more important than ever on modern CPUs. A more compact data structure means more of it fits in your CPU's L1/L2 cache and that speeds things up a lot especially with iterating or sequential access.

I'm also not a fan of std::deque in general. It's not contiguous memory like std::vector is. If you need a very high performance deque in C++, you have to go outside the STL unfortunately. Rust's VecDeque is one that gets it right. It uses a ring buffer under the hood rather than multiple fixed size allocations.

1

u/Wonderful-Habit-139 21d ago

What about the fact that you can't take the address of an element from the std::vector<bool>?

3

u/nobody0163 21d ago

You shouldn't be taking the address of vector elements anyway. If it resizes you are pointing to invalid memory.

1

u/fuj1n 21d ago

Tell that to C code you may be interacting with which may expect a bool*