いいえ、これがその理由です。
次の 2 つのケースを考えてみましょう。
int a, b, c;
auto stackvec = new vector<int*> { &a, &b, &c };
auto heapvec = new vector<int*> { new int, new int, new int };
delete stackvec;
delete heapvec;
delete保持しているポインターで呼び出されたvector*sを呼び出すと、未定義の動作を生成する最初の自動変数を使用することになるため(悪いことです)、delete問題が山積みになります (しゃれが意図されています)。deletedelete
ポインタが動的に割り当てられていることがわかっている場合は、ポインタvectorとポインタを自分で手動で反復する必要があります。使用すると、何も呼び出す必要がありません。deletestd::unique_ptrdelete
また、そもそもaへのポインターは必要ないかもしれませんが、vectorあなたの状況がわからないので判断しません。
std::arrayとについては、コンパイル時にstd::vectorのサイズを知る必要があり、実行時にサイズを変更することはできませんが、これらの制限はありません。std::arrayvector