C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++ STLのdeque::assign()関数の使い方を徹底解説

本記事では、C++ STLにおける deque::assign() 関数の動作について詳しく解説します。

デック(deque)は「double ended queue(両端キュー)」と呼ばれるデータ構造で、先頭と末尾の両方から要素の挿入・削除が可能なコンテナです。C++の deque::assign() は組み込み関数の一つで、dequeコンテナに新しい値を割り当てるために使用されます。この関数が呼び出されるたびに、既存の要素をすべて置き換えて新しい値を設定し、それに応じてコンテナのサイズも自動的に調整されます。

構文

deque::assign() の構文は以下の通りです。

dequename.assign(<int> size, <int> val)

パラメータ

この関数は2つのパラメータを受け取ります。

  • size: dequeコンテナのサイズ(要素数)を指定します。
  • val: コンテナに格納する値を指定します。

また、sizeval の代わりにイテレータを引数として渡すことも可能です。その場合は、開始位置と終了位置を指定して要素を割り当てることができます。両方の使い方は後述のサンプルコードで紹介します。

戻り値

この関数には戻り値はありません。

使用例

Input: dq.assign(5, 1)
Output: deque elements are: 1 1 1 1 1
Input: dq.assign(5, 2)
dq1.assign(dq.start()+2, dq.end())
Output: deque elements are: 2 2 2 2 2
deque elements are: 2 2 2

解説: deque dqには「2 2 2 2 2」の5つの要素が格納されています。一方、dq1では先頭から2つの要素をスキップし、dqの3番目の要素以降を割り当てているため、「2 2 2」という3つの要素が格納されます。

サイズと値を指定する場合

サンプルコード

#include <bits/stdc++.h>
using namespace std;
int main() {
    deque<int> deq;
    // 値1を5つ割り当てる
    deq.assign(5, 1); // ここで5はサイズ、1は値
    cout << "deque elements are: ";
    for (auto it = deq.begin(); it != deq.end(); it++)
    cout << *it << " ";
    return 0;
}

出力結果

上記のコードを実行すると、以下の出力が得られます。

deque elements are: 1 1 1 1 1

イテレータを使用する場合

サンプルコード

#include <bits/stdc++.h>
using namespace std;
int main() {
    deque<int> deq;
    // 値2を5つ割り当てる
    deq.assign(5, 2);
    cout << "deque elements are: ";
    for (auto it = deq.begin(); it != deq.end(); it++)
    cout << *it << " ";
    deque<int> deq1;
    // 3番目の要素から末尾までの全要素を
    // deq1に割り当てる
    deq1.assign(deq.begin() + 2, deq.end());
    cout << "\ndeque1 elements are: ";
    for (auto it = deq1.begin(); it != deq1.end(); it++)
    cout << *it << " ";
    return 0;
}

出力結果

上記のコードを実行すると、以下の出力が得られます。

deque elements are: 2 2 2 2 2
deque1 elements are: 2 2 2

まとめ

deque::assign() を使うことで、既存の要素を一括で置き換えつつ、新しい値や別の範囲の要素を簡単に割り当てることができます。「サイズ+値」による指定方法と、イテレータによる範囲指定方法の2パターンを使い分けることで、柔軟なコンテナ操作が可能になります。

  1. C++ STLのcosh()関数とは?双曲線余弦の求め方をサンプルコード付きで解説

    cosh()関数とは? C++のSTLに組み込まれているcosh()関数は、ラジアン単位で与えられた角度の双曲線余弦(ハイパボリック・コサイン)を計算して返す関数です。使用するには、<cmath>ヘッダーをインクルードする必要があります。 双曲線余弦は、数学的に次の式で定義されます。 cosh(x) = (e^x + e^(-x)) / 2 構文 cosh()関数の構文は以下の通りです。 cosh(var) 構文から分かるように、cosh()関数はfloat型、double型、long double型のいずれかの引数varを受け取ります。そして、その双曲線余弦を返します。なお、引

  2. C++ STLのsinh()関数の使い方を徹底解説

    sinh()関数とはsinh()関数は、ラジアンで指定された値の双曲線正弦(ハイパボリックサイン)を返す関数です。C++のSTL(標準テンプレートライブラリ)に組み込まれており、<cmath>ヘッダをインクルードすることで利用できます。双曲線正弦は、以下の数式で定義されます。sinh(x) = (e^x − e^−x) / 2sinh()関数の構文sinh()関数の構文は以下のとおりです。sinh(var)構文からわかるように、sinh()関数はfloat型、double型、long double型のいずれかのパラメータvarを受け取ります。戻り値は、varの双曲線正弦です。sin