近々テストがありますが、いくつかの問題には STL クラス テンプレート関数が含まれているようです。多くはアルゴリズムの複雑さを扱っているため、基本的な操作の複雑さを軽減しようとしています。私が混乱しているのは、挿入操作です。挿入操作は、特定のコンテナーを使用して、イテレーターが指す位置から開始して挿入を行うことができます。
vector<int> vector1;
for (int i=1; i<6; i++) vector1.push_back(i);
vector<int>::iterator it;
it = vector1.begin();
vector1.insert(it+2,10);
さて、この挿入操作は、ほとんどの挿入操作で直線的な時間がかかることを認識しています。ただし、単一のアイテムを挿入する場合、これにはまだ直線的な時間がかかりますか? リストSTLの場合、単一のアイテムを挿入するのに一定の時間がかかるため、これを尋ねます。これは、リストが動的な二重リンク循環チェーンであるためだと考えました。
vector は動的で連続したストレージ構造なので、vector[size-1] の前に挿入すると、挿入後のすべての項目を 1 単位上に移動する必要があるということですか?
さて、デキューです。私は、deque STL を、配列内のポインタが指す単一リンク チェーンのシステムと考えています。これは正しいです?この場合、前部または後部ではなく、両端キューへの単一の挿入は O(1) でしょうか?
ありがとう、たくさんの質問をしてすみません。