Namespaces
Variants

std::vector<T,Allocator>:: push_back

From cppreference.net

void push_back ( const T & value ) ;
(1) (C++20부터 constexpr)
void push_back ( T && value ) ;
(2) (C++11부터)
(C++20부터 constexpr)

컨테이너의 끝에 value 의 복사본을 추가합니다.

만약 연산 후 새로운 size() 가 기존 capacity() 보다 크면 재할당이 발생하며, 이 경우 모든 반복자(including the end() iterator)와 모든 요소에 대한 참조가 무효화됩니다. 그렇지 않으면 end() 반복자만 무효화됩니다.

목차

매개변수

value - 추가할 요소의 값

타입 요구사항
-
다음 조건이 충족될 경우 동작은 정의되지 않음:
1) T CopyInsertable 요구사항을 vector 에 대해 충족하지 않을 경우
2) T MoveInsertable 요구사항을 vector 에 대해 충족하지 않을 경우
(C++11부터)

복잡도

분할 상환 상수 시간.

예외

예외가 발생하면(이는 Allocator::allocate() 또는 요소 복사/이동 생성자/대입 연산자로 인해 발생할 수 있음), 이 함수는 아무런 효과를 가지지 않습니다( strong exception guarantee ).

만약 T 의 이동 생성자가 noexcept 가 아니고 T * this CopyInsertable 이 아닌 경우, vector 는 예외를 던지는 이동 생성자를 사용합니다. 만약 예외가 발생하면, 보장이 무효화되고 효과는 명시되지 않습니다.

(C++11부터)

참고 사항

일부 구현에서는 std::length_error 를 던집니다. 이는 push_back 이 재할당을 유발하여 max_size 를 초과하는 경우입니다 (이는 reserve ( size () + 1)) 에 해당하는 암시적 호출로 인해 발생합니다.

예제

#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
int main()
{
    std::vector<std::string> letters;
    letters.push_back("abc");
    std::string s{"def"};
    letters.push_back(std::move(s));
    std::cout << "std::vector letters holds: ";
    for (auto&& e : letters)
        std::cout << std::quoted(e) << ' ';
    std::cout << "\nMoved-from string s holds: " << std::quoted(s) << '\n';
}

가능한 출력:

std::vector letters holds: "abc" "def"
Moved-from string s holds: ""

참고 항목

끝에서 제자리에 요소를 생성합니다
(public member function)
마지막 요소를 제거합니다
(public member function)
인수에서 추론된 타입의 std::back_insert_iterator 를 생성합니다
(function template)