Why no mention of std::array?
C++
The center for all discussion and news regarding C++.
Rules
- Respect instance rules.
- Don't be a jerk.
- Please keep all posts related to C++.
Why no mention of std::array?
I think this was focused on maintaining code. Replacing C-style arrays with std::array can be a daunting task, depending on how the project is structured.
I don't really see how it's daunting enough to avoid mentioning. You can replace a C array on the stack by just swapping it with std::array. Yes, it can depend on the project structure, but that's equivalently true for any STL container the author recommended.
I don’t really see how it’s daunting enough to avoid mentioning.
I think it's a good call not to mention them because they are irrelevant given the topic. If your code base and/or the consumers of your code base are using C-style arrays for input and/or output, it's hardly helpful to suggest changing all your interfaces to use another data type. It's outright impossible if you're dealing with extern C interfaces.
Tbh if you aren’t already using someone else’s array implementation that includes length information, just write your own simple wrapper e.g.
struct MyArrayWrapper { int *data; int length; }
At that point I would just use std::span if you can, then you also get the standard container/iterator interfaces for free.
The article did mention that that's what you'd probably have to do.
I have only one pointer (for example, if you created an array using new)
In most cases, it's necessary to rewrite the program a bit and add an array size passing. Sadly, that's how it works.