Namespaces
Variants

std::deque<T,Allocator>:: resize

From cppreference.net

void resize ( size_type count ) ;
(1) (constexpr since C++26)
void resize ( size_type count, const value_type & value ) ;
(2) (constexpr since C++26)

컨테이너의 크기를 count 개의 요소를 포함하도록 조정합니다:

  • 만약 count 가 현재 크기와 같다면, 아무 작업도 수행하지 않습니다.
  • 현재 크기가 count 보다 크다면, 컨테이너는 처음 count 개의 요소로 축소됩니다.
  • 현재 크기가 count 보다 작다면:
1) 추가적인 복사본 T ( ) (C++11 이전) 기본 삽입된 요소들 (C++11 이후) 이 추가됩니다.
2) value 의 추가 복사본이 추가됩니다.

목차

매개변수

count - 컨테이너의 새로운 크기
value - 새로운 요소들을 초기화할 값
타입 요구사항
-

다음 조건이 만족될 경우 동작은 정의되지 않음:

1) T DefaultInsertable 또는 MoveInsertable deque 에 대해 아닌 경우.
2) T CopyInsertable deque 에 대해 아닌 경우.
(C++11부터)

복잡도

현재 크기와 count 사이의 차이에 선형적으로 비례합니다.

참고 사항

오버로드에서 값 초기화 ( 1 ) 가 바람직하지 않은 경우, 예를 들어 요소들이 비클래스 타입이고 제로화가 필요하지 않다면, 사용자 정의 Allocator::construct 를 제공함으로써 이를 피할 수 있습니다.

예제

#include <deque>
#include <iostream>
void print(auto rem, const std::deque<int>& c)
{
    for (std::cout << rem; const int el : c)
        std::cout << el << ' ';
    std::cout << '\n';
}
int main()
{
    std::deque<int> c = {1, 2, 3};
    print("The deque holds: ", c);
    c.resize(5);
    print("After resize up to 5: ", c);
    c.resize(2);
    print("After resize down to 2: ", c);
    c.resize(6, 4);
    print("After resize up to 6 (initializer = 4): ", c);
}

출력:

The deque holds: 1 2 3
After resize up to 5: 1 2 3 0 0
After resize down to 2: 1 2
After resize up to 6 (initializer = 4): 1 2 4 4 4 4

결함 보고서

다음 동작 변경 결함 보고서는 이전에 게시된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 수정된 동작
LWG 679 C++98 resize() value 를 값으로 전달함 const 참조로 전달
LWG 1418 C++98 resize ( size ( ) ) 의 동작이 명시되지 않음 명시됨
LWG 2033 C++11 1. 요소들이 erase() [1] 를 사용하여 제거됨
2. T MoveInsertable 일 필요가 없음
1. pop_back() 사용
2. 요구됨
LWG 2066 C++11 오버로드 ( 1 ) 가 오버로드 ( 2 ) 의 예외
안전성 보장을 가지지 않음
추가됨
LWG 2160 C++11 LWG 2033의 해결로 인해
요소들이 pop_back() [2] 를 사용하여 제거됨
요소 제거 방법을
명시하지 않음
  1. erase() deque 의 중간에 있는 요소들을 제거할 수 있으므로, 제거된 구간 뒤에 있는 요소들이 빈 공간을 채우기 위해 앞으로 이동될 수 있도록 값 타입이 MoveAssignable 요구사항을 만족해야 합니다. 그러나 resize() deque 의 끝에 있는 요소들만 제거할 수 있으므로 MoveAssignable 요구사항이 불필요합니다.
  2. pop_back() 을 사용하여 요소들을 제거하는 것은 요소들이 뒤에서 앞으로 순서대로 제거되어야 함을 의미합니다.

참고 항목

가능한 최대 원소 개수를 반환합니다
(public member function)
원소의 개수를 반환합니다
(public member function)
컨테이너가 비어 있는지 확인합니다
(public member function)