I was told that the optimal way to program in C++ is to use STL and string rather than arrays and character arrays.
i.e.,
vector<int> myInt;
rather than
int myInt[20]
However, I don’t understand the rational behind why it would result in security problems.
I suggest you read up on buffer overruns, then. It’s much more likely that a programmer creates or risks buffer overruns when using raw arrays, since they give you less protection and don’t offer an API. Sure, it’s possible to shoot yourself in the foot using STL too, but at least it’s harder.