Namespaces
Variants

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

cppreference.net에서

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

주어진 요소를 value 컨테이너의 끝에 추가합니다.

1) 새 요소는 value의 복사본으로 초기화됩니다.
2) value가 새 요소로 이동됩니다.

연산 후 새 size()이(가) 이전 capacity()보다 크면 재할당이 발생하며, 이 경우 모든 반복자(end() 반복자 포함)와 요소에 대한 모든 참조가 무효화됩니다. 그렇지 않으면 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)