Namespaces
Variants

std:: forward_list

From cppreference.net
헤더 파일에 정의됨 <forward_list>
template <

class T,
class Allocator = std:: allocator < T >

> class forward_list ;
(1) (C++11부터)
namespace pmr {

template < class T >
using forward_list = std :: forward_list < T, std:: pmr :: polymorphic_allocator < T >> ;

}
(2) (C++17부터)

std::forward_list 는 컨테이너 내 어디에서든 요소의 빠른 삽입과 삭제를 지원하는 컨테이너입니다. 빠른 임의 접근은 지원되지 않습니다. 단일 연결 리스트로 구현됩니다. std::list 와 비교했을 때, 이 컨테이너는 양방향 순회가 필요하지 않은 경우 더 효율적인 공간 사용을 제공합니다.

리스트 내에서 또는 여러 리스트 간에 요소를 추가, 제거 및 이동해도 현재 리스트의 다른 요소를 참조하는 반복자는 무효화되지 않습니다. 그러나 해당 요소가 리스트에서 제거될 때( erase_after 를 통해) 해당 요소를 참조하는 반복자나 레퍼런스는 무효화됩니다.

std::forward_list Container 요구 사항( size 멤버 함수와 operator== 의 복잡도가 항상 선형인 점은 제외), AllocatorAwareContainer SequenceContainer 요구 사항을 충족합니다.

std::forward_list 의 모든 멤버 함수는 constexpr 입니다: 상수 표현식 평가에서 std::forward_list 객체를 생성하고 사용하는 것이 가능합니다.

그러나 std::forward_list 객체는 일반적으로 constexpr 일 수 없습니다. 동적으로 할당된 저장 공간은 동일한 상수 표현식 평가에서 해제되어야 하기 때문입니다.

(C++26부터)

목차

템플릿 매개변수

T - 요소의 타입.
요소에 부과되는 요구사항은 컨테이너에서 수행되는 실제 연산에 따라 다릅니다. 일반적으로 요소 타입이 완전한 타입이어야 하고 Erasable 요구사항을 충족해야 하지만, 많은 멤버 함수들은 더 엄격한 요구사항을 부과합니다. (C++17 이전)

요소에 부과되는 요구사항은 컨테이너에서 수행되는 실제 연산에 따라 다릅니다. 일반적으로 요소 타입이 Erasable 요구사항을 충족해야 하지만, 많은 멤버 함수들은 더 엄격한 요구사항을 부과합니다. 할당자가 할당자 완전성 요구사항 을 충족하는 경우, 이 컨테이너(그러나 그 멤버들은 아님)는 불완전한 요소 타입으로 인스턴스화될 수 있습니다.

기능 테스트 매크로 표준 기능
__cpp_lib_incomplete_container_elements 201505L (C++17) 최소 불완전 타입 지원
(C++17 이후)

Allocator - 메모리를 획득/해제하고 해당 메모리에서 요소를 생성/소멸시키는 데 사용되는 할당자. 이 타입은 Allocator 요구사항을 충족해야 합니다. 동작은 정의되지 않음 (C++20 이전) 프로그램의 형식이 올바르지 않음 (C++20 이후) ( Allocator::value_type T 와 동일하지 않은 경우).

멤버 타입

멤버 타입 정의
value_type T
allocator_type Allocator
size_type 부호 없는 정수 타입 (일반적으로 std::size_t )
difference_type 부호 있는 정수 타입 (일반적으로 std::ptrdiff_t )
reference value_type &
const_reference const value_type &
pointer std:: allocator_traits < Allocator > :: pointer
const_pointer std:: allocator_traits < Allocator > :: const_pointer
iterator LegacyForwardIterator ConstexprIterator (C++26부터) 이면서 value_type 을 가리키는 반복자
const_iterator LegacyForwardIterator ConstexprIterator (C++26부터) 이면서 const value_type 을 가리키는 반복자

멤버 함수

forward_list 를 생성합니다
(public member function)
forward_list 를 파괴합니다
(public member function)
컨테이너에 값을 할당합니다
(public member function)
컨테이너에 값을 할당합니다
(public member function)
컨테이너에 값들의 범위를 할당합니다
(public member function)
관련 할당자 반환
(public member function)
요소 접근
첫 번째 요소에 접근
(public member function)
반복자
시작점 이전 요소에 대한 반복자를 반환함
(public member function)
시작 부분에 대한 반복자를 반환합니다
(public member function)
끝을 가리키는 반복자를 반환합니다
(public member function)
용량
컨테이너가 비어 있는지 확인합니다
(public member function)
가능한 최대 요소 수를 반환합니다
(public member function)
수정자
내용을 지움
(public member function)
요소 뒤에 요소들을 삽입합니다
(public member function)
요소 뒤에 제자리에서 요소를 생성합니다
(public member function)
요소 뒤에 요소들의 범위를 삽입합니다
(public member function)
요소 다음의 요소를 삭제합니다
(public member function)
시작 부분에 요소를 삽입합니다
(public member function)
시작 부분에 제자리에서 요소를 생성합니다
(public member function)
시작 부분에 요소 범위를 추가합니다
(public member function)
첫 번째 요소를 제거합니다
(public member function)
저장된 요소의 개수를 변경합니다
(public member function)
내용을 교환합니다
(public member function)
연산
두 개의 정렬된 리스트를 병합합니다
(public member function)
다른 forward_list 로부터 요소들을 전송합니다
(public member function)
특정 조건을 만족하는 요소들을 제거합니다
(public member function)
요소들의 순서를 반전시킵니다
(public member function)
연속된 중복 요소를 제거합니다
(public member function)
요소들을 정렬합니다
(public member function)

비멤버 함수

(C++11) (C++11) (C++20에서 제거됨) (C++11) (C++20에서 제거됨) (C++11) (C++20에서 제거됨) (C++11) (C++20에서 제거됨) (C++11) (C++20에서 제거됨) (C++20)
forward_list 의 값을 사전식으로 비교합니다
(함수 템플릿)
std::swap 알고리즘을 특수화합니다
(함수 템플릿)
특정 조건을 만족하는 모든 요소를 삭제합니다
(함수 템플릿)

추론 가이드

(C++17부터)

참고 사항

기능 테스트 매크로 표준 기능
__cpp_lib_containers_ranges 202202L (C++23) 컨테이너를 위한 범위 생성 및 삽입
__cpp_lib_constexpr_forward_list 202502L (C++26) constexpr std::forward_list

예제

참고 항목

이중 연결 리스트
(클래스 템플릿)