最終更新日時(UTC):
が更新

履歴 編集

function
<vector>

std::vector::resize

void resize(size_type sz);                       // (1) C++11
constexpr void resize(size_type sz);             // (1) C++20

void resize(size_type sz, const T& c);           // (2) C++11
constexpr void resize(size_type sz, const T& c); // (2) C++20

void resize(size_type sz, T c = T()); // (1) + (2) C++03

要件

要素数を変更する

要件

  • (1) :

    • Tデフォルト構築可能であること (C++14)
    • T*thisに対してコピー挿入可能であること (C++11まで)
    • T*thisに対してムーブ挿入可能であること (C++14)
  • (2) :

    • T*thisに対してコピー挿入可能であること (C++14)

効果

  • (1) :

    • もしszが現在のコンテナのsize()より小さい場合、以下の動作をする:
    • もしszが現在のコンテナのsize()より大きい場合、sz - size()個だけ値初期化されたT型オブジェクトのコピーを追加する。
  • (2) :

    • C++11まで

      if (sz > size())
        insert(end(), sz - size(), c);
      else if (sz < size())
        erase(begin() + sz, end());
      

    • C++14

      • もしszが現在のコンテナのsize()より小さい場合、pop_back()関数をsize() - sz回呼ぶ
      • もしszが現在のコンテナのsize()より大きい場合、sz - size()個だけオブジェクトcのコピーを追加する。
    • C++17以降

      • もしszが現在のコンテナのsize()より小さい場合、後ろからsize() - sz個の要素を削除する
      • そうでなければ、sz - size()個だけオブジェクトcのコピーを追加する。

戻り値

なし

備考

  • (2) : コピー挿入可能でない型Tのムーブコンストラクタによる例外を除き、例外が送出された場合この関数は何もしない。

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
  // 増加
  {
    std::vector<int> v = {3, 1, 4};
    v.resize(5);

    std::for_each(v.begin(), v.end(), [](int x) { std::cout << x << std::endl; });
  }
  std::cout << std::endl;

  // 減少
  {
    std::vector<int> v = {3, 1, 4};
    v.resize(1);

    std::for_each(v.begin(), v.end(), [](int x) { std::cout << x << std::endl; });
  }
}

出力

3
1
4
0
0

3

参照