다음을 통해 공유


forward_list 클래스

다양한 길이의 요소 시퀀스를 제어하는 개체를 설명합니다. 각각 Type 형식의 멤버를 포함하는 노드의 단일 연결 목록으로 시퀀스가 저장됩니다.

구문

template <class Type,
    class Allocator = allocator<Type>>
class forward_list

매개 변수

형식*
forward_list에 저장되는 요소 데이터 형식입니다.

할당자
forward_list의 메모리 할당 및 할당 취소에 대한 세부 정보를 캡슐화하는 저장된 할당자 개체입니다. 이 매개 변수는 선택 사항입니다. 기본값은 할당자<Type>입니다.

설명

개체는 forward_list 할당자 클래스를 기반으로 하는 클래스 Allocator의 저장된 개체를 통해 제어하는 시퀀스에 대한 스토리지를 할당하고 해제합니다(일반적으로 std::allocator). 자세한 내용은 할당자를 참조하세요. 할당자 개체에는 형식 allocator의 개체와 동일한 외부 인터페이스가 있어야 합니다.

참고 항목

컨테이너 개체를 할당하는 경우 저장된 할당자 개체는 복사되지 않습니다.

forward_list를 통해 제어되는 시퀀스의 요소를 지울 경우 반복기, 포인터 및 참조가 무효화될 수도 있습니다. 제어되는 시퀀스에서 forward_list 수행되는 삽입 및 접미사에서는 반복기를 무효화하지 않습니다.

제어되는 시퀀스에 대한 추가는 Type(const T&) 생성자를 호출하는 유일한 멤버 함수인 forward_list::insert_after를 호출하여 발생할 수 있습니다. forward_list는 이동 생성자를 호출할 수도 있습니다. 이러한 식에서 예외가 발생하는 경우 컨테이너 개체는 새 요소를 삽입하지 않고 예외를 다시 발생시킵니다. 따라서 형식 forward_list 의 개체는 이러한 예외가 발생할 때 알려진 상태로 남습니다.

멤버

생성자

속성 설명
forward_list forward_list 형식의 개체를 생성합니다.

Typedef

속성 설명
allocator_type 정방향 목록 개체의 할당자 클래스를 나타내는 형식입니다.
const_iterator 정방향 목록에 대한 상수 반복기를 제공하는 형식입니다.
const_pointer 정방향 목록의 const 요소에 대한 포인터를 제공하는 형식입니다.
const_reference 정방향 목록의 요소에 대한 상수 참조를 제공하는 형식입니다.
difference_type 반복기가 가리키는 요소 사이의 범위에 있는 정방향 목록의 요소 수를 나타내는 데 사용할 수 있는 부호 있는 정수 형식입니다.
iterator 정방향 목록에 대한 반복기를 제공하는 형식입니다.
pointer 정방향 목록의 요소에 대한 포인터를 제공하는 형식입니다.
reference 정방향 목록의 요소에 대한 참조를 제공하는 형식입니다.
size_type 두 요소 사이의 부호가 없는 거리를 나타내는 형식입니다.
value_type 정방향 목록에 저장된 요소의 형식을 나타내는 형식입니다.

함수

속성 설명
assign 정방향 목록에서 요소를 삭제하고 대상 정방향 목록에서 요소의 새 집합을 복사합니다.
before_begin 정방향 목록에서 첫 번째 요소 앞의 위치에 주소를 지정하는 반복기를 반환합니다.
begin 정방향 목록에서 첫 번째 요소의 주소를 지정하는 반복기를 반환합니다.
cbefore_begin 정방향 목록에서 첫 번째 요소 앞의 위치에 주소를 지정하는 const 반복기를 반환합니다.
cbegin 정방향 목록에서 첫 번째 요소의 주소를 지정하는 const 반복기를 반환합니다.
cend 정방향 목록에서 마지막 요소 다음에 나오는 위치의 주소를 지정하는 const 반복기를 반환합니다.
clear 정방향 목록의 모든 요소를 지웁니다.
emplace_after 이동 후 지정된 위치 뒤에 새 요소를 생성합니다.
emplace_front 생성된 요소를 목록 시작 부분에 추가합니다.
empty 정방향 목록이 비어 있는지 테스트합니다.
end 정방향 목록에서 마지막 요소 다음에 나오는 위치의 주소를 지정하는 반복기를 반환합니다.
erase_after 정방향 목록의 지정된 위치 뒤에서 요소를 제거합니다.
front 정방향 목록의 첫 번째 요소에 대한 참조를 반환합니다.
get_allocator 정방향 목록을 생성하는 데 사용되는 할당자 개체의 복사본을 반환합니다.
insert_after 정방향 목록의 지정된 위치 뒤에 요소를 추가합니다.
max_size 정방향 목록의 최대 길이를 반환합니다.
merge 요소를 인수 목록에서 제거하고 대상 정방향 목록에 삽입한 다음 새로 조합된 요소 집합을 오름차순 또는 기타 지정된 순서로 정렬합니다.
pop_front 정방향 목록의 시작 부분에 있는 요소를 삭제합니다.
push_front 정방향 목록의 시작 부분에 요소를 추가합니다.
remove 정방향 목록에서 지정된 값과 일치하는 요소를 지웁니다.
remove_if 지정된 조건자를 충족하는 요소를 정방향 목록에서 지웁니다.
resize 정방향 목록의 새 크기를 지정합니다.
reverse 정방향 목록에 요소가 나타나는 순서를 반대로 바꿉니다.
sort 오름차순 또는 조건자를 통해 지정된 순서로 요소를 정렬합니다.
splice_after 노드 간의 연결을 다시 붙입니다.
swap 두 정방향 목록의 요소를 교환합니다.
unique 지정된 테스트를 통과하는 인접 요소를 제거합니다.

연산자

속성 설명
operator= 정방향 목록의 요소를 다른 정방향 목록의 복사본으로 바꿉니다.

allocator_type

정방향 목록 개체의 할당자 클래스를 나타내는 형식입니다.

typedef Allocator allocator_type;

설명

allocator_type은 템플릿 매개 변수 Allocator의 동의어입니다.

할당

정방향 목록에서 요소를 삭제하고 대상 정방향 목록에서 요소의 새 집합을 복사합니다.

void assign(
    size_type Count,
    const Type& Val);

void assign(
    initializer_list<Type> IList);

template <class InputIterator>
void assign(InputIterator First, InputIterator Last);

매개 변수

first
대체 범위의 시작입니다.

last
대체 범위의 끝입니다.

count
할당할 요소 수입니다.

val
각 요소에 할당할 값입니다.

Type
값의 형식입니다.

IList
복사할 initializer_list입니다.

설명

forward_list가 정수 형식이면 첫 번째 멤버 함수는 assign((size_type)First, (Type)Last)와 동일하게 동작합니다. 그렇지 않으면 첫 번째 멤버 함수는 *this로 제어되는 시퀀스를 [ First, Last) 시퀀스로 바꿉니다. 대체 시퀀스는 초기 제어되는 시퀀스와 겹치면 안 됩니다.

두 번째 멤버 함수는 *this로 제어되는 시퀀스를 Val 값의 Count 요소 반복으로 바꿉니다.

세 번째 멤버 함수는 initializer_list의 요소를 forward_list로 복사합니다.

before_begin

정방향 목록에서 첫 번째 요소 앞의 위치에 주소를 지정하는 반복기를 반환합니다.

const_iterator before_begin() const;
iterator before_begin();

Return Value

시퀀스의 첫 번째 요소 바로 앞(또는 빈 시퀀스의 끝 바로 앞)을 가리키는 정방향 반복기입니다.

설명

begin

정방향 목록에서 첫 번째 요소의 주소를 지정하는 반복기를 반환합니다.

const_iterator begin() const;
iterator begin();

Return Value

시퀀스의 첫 번째 요소(또는 빈 시퀀스의 끝 바로 다음)를 가리키는 정방향 반복기입니다.

설명

cbefore_begin

정방향 목록에서 첫 번째 요소 앞의 위치에 주소를 지정하는 const 반복기를 반환합니다.

const_iterator cbefore_begin() const;

Return Value

시퀀스의 첫 번째 요소 바로 앞(또는 빈 시퀀스의 끝 바로 앞)을 가리키는 정방향 반복기입니다.

설명

cbegin

범위의 첫 번째 요소를 주소 지정하는 const 반복기를 반환합니다.

const_iterator cbegin() const;

Return Value

범위의 첫 번째 요소 또는 빈 범위의 끝 바로 다음 위치를 가리키는 const 정방향 액세스 반복기입니다(빈 범위의 경우 cbegin() == cend()).

설명

반환 값을 cbegin사용하면 범위의 요소를 수정할 수 없습니다.

begin() 멤버 함수 대신 이 멤버 함수를 사용하여 반환 값이 const_iterator임을 보장할 수 있습니다. 일반적으로 다음 예제와 같이 자동 형식 추론 키워드와 함께 사용됩니다. 이 예제에서는 Containerbegin()cbegin()를 지원하는 수정 가능(비const)한 컨테이너로 가정합니다.

auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();
// i2 is Container<T>::const_iterator

cend

범위에서 마지막 요소 바로 다음의 위치를 주소 지정하는 const 반복기를 반환합니다.

const_iterator cend() const;

Return Value

범위 끝의 바로 다음을 가리키는 정방향 액세스 반복기입니다.

설명

cend는 반복기가 범위 끝을 통과했는지 여부를 테스트하는 데 사용됩니다.

end() 멤버 함수 대신 이 멤버 함수를 사용하여 반환 값이 const_iterator임을 보장할 수 있습니다. 일반적으로 다음 예제와 같이 자동 형식 추론 키워드와 함께 사용됩니다. 이 예제에서는 Containerend()cend()를 지원하는 수정 가능(비const)한 컨테이너로 가정합니다.

auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();

// i2 is Container<T>::const_iterator

반환된 cend 값은 역참조하면 안 됩니다.

clear

정방향 목록의 모든 요소를 지웁니다.

void clear();

설명

이 멤버 함수는 .를 호출합니다 erase_after(before_begin(), end()).

const_iterator

정방향 목록에 대한 상수 반복기를 제공하는 형식입니다.

typedef implementation-defined const_iterator;

설명

const_iterator는 제어되는 시퀀스의 상수 정방향 반복기로 사용될 수 있는 개체를 설명합니다. 구현 정의 형식의 동의어로 여기에 설명됩니다.

const_pointer

정방향 목록의 const 요소에 대한 포인터를 제공하는 형식입니다.

typedef typename Allocator::const_pointer
    const_pointer;

설명

const_reference

정방향 목록의 요소에 대한 상수 참조를 제공하는 형식입니다.

typedef typename Allocator::const_reference const_reference;

설명

difference_type

반복기가 가리키는 요소 사이의 범위에 있는 정방향 목록의 요소 수를 나타내는 데 사용할 수 있는 부호 있는 정수 형식입니다.

typedef typename Allocator::difference_type difference_type;

설명

difference_type은 제어되는 시퀀스에서 두 요소의 주소 간 차이점을 나타낼 수 있는 개체를 설명합니다.

emplace_after

이동 후 지정된 위치 뒤에 새 요소를 생성합니다.

template <class T>
iterator emplace_after(const_iterator Where, Type&& val);

매개 변수

Where
대상 정방향 목록에서 새 요소가 생성된 위치입니다.

val
생성자 인수입니다.

Return Value

새로 삽입된 요소를 지정하는 반복기입니다.

설명

이 멤버 함수는 제어되는 시퀀스에서 Where가 가리키는 요소 바로 뒤에 생성자 인수 val이 있는 요소를 삽입합니다. 그렇지 않으면 해당 동작은 forward_list::insert_after와 동일합니다.

emplace_front

생성된 요소를 목록 시작 부분에 추가합니다.

template <class Type>
    void emplace_front(Type&& val);

매개 변수

val
정방향 목록의 시작에 추가된 요소입니다.

설명

이 멤버 함수는 제어되는 시퀀스의 끝에 생성자 인수 _ val이 있는 요소를 삽입합니다.

예외가 throw되면 컨테이너는 변경되지 않은 상태로 유지되며 예외가 다시 throw됩니다.

empty

정방향 목록이 비어 있는지 테스트합니다.

bool empty() const;

Return Value

정방향 목록이 비어 있으면 true이고, 그렇지 않으면 false입니다.

end

정방향 목록에서 마지막 요소 다음에 나오는 위치의 주소를 지정하는 반복기를 반환합니다.

const_iterator end() const;
iterator end();

Return Value

시퀀스의 끝 바로 다음을 가리키는 정방향 반복기입니다.

erase_after

정방향 목록의 지정된 위치 뒤에서 요소를 제거합니다.

iterator erase_after(const_iterator Where);
iterator erase_after(const_iterator first, const_iterator last);

매개 변수

Where
대상 정방향 목록에서 요소가 지워진 위치입니다.

first
지울 범위의 시작입니다.

last
지울 범위의 끝입니다.

Return Value

제거되는 요소 뒤에 남아 있는 첫 번째 요소를 지정하는 반복기이거나, 남아 있는 요소가 없는 경우에는 forward_list::end입니다.

설명

첫 번째 멤버 함수는 Where 바로 다음에 제어되는 시퀀스의 요소를 제거합니다.

두 번째 멤버 함수는 ( first, last) 범위(끝점은 포함되지 않음)에 있는 제어되는 시퀀스의 요소를 제거합니다.

N 요소를 지우면 N 소멸자가 호출됩니다. 다시 할당이 수행되므로 지워진 요소에 대한 반복기와 참조가 무효화됩니다.

멤버 함수는 예외를 throw하지 않습니다.

forward_list

forward_list 형식의 개체를 생성합니다.

forward_list();
explicit forward_list(const Allocator& Al);
explicit forward_list(size_type Count);
forward_list(size_type Count, const Type& Val);
forward_list(size_type Count, const Type& Val, const Allocator& Al);
forward_list(const forward_list& Right);
forward_list(const forward_list& Right, const Allocator& Al);
forward_list(forward_list&& Right);
forward_list(forward_list&& Right, const Allocator& Al);
forward_list(initializer_list<Type> IList, const Alloc& Al);
template <class InputIterator>
forward_list(InputIterator First, InputIterator Last);
template <class InputIterator>
forward_list(InputIterator First, InputIterator Last, const Allocator& Al);

매개 변수

Al
이 개체에 사용할 할당자 클래스입니다.

Count
생성된 목록의 요소 수입니다.

Val
생성된 목록에 있는 요소의 값입니다.

오른쪽
생성된 목록이 복사본으로 지정될 목록입니다.

첫째
복사할 요소의 범위에서 첫 번째 요소의 위치입니다.

마지막
복사할 요소의 범위를 벗어나는 첫 번째 요소의 위치입니다.

IList
복사할 initializer_list입니다.

설명

모든 생성자는 할당자를 저장하고 제어되는 시퀀스를 초기화합니다. 할당자 개체는 인수 Al(있는 경우)입니다. 복사 생성자의 경우 .right.get_allocator() 아니면 Allocator()입니다.

처음 두 생성자는 빈 초기 제어되는 시퀀스를 지정합니다.

세 번째 생성자는 값Type()의 Count 요소의 반복을 지정합니다.

네 번째 및 다섯 번째 생성자는 값 Val의 Count 요소 반복지정합니다.

여섯 번째 생성자는 Right로 제어되는 시퀀스의 복사본을 지정합니다. InputIterator가 정수 형식이면 다음 두 생성자가 (Type)Last 값의 (size_type)First 요소 반복을 지정합니다. 그렇지 않으면 다음 두 생성자는 시퀀스 [First, Last)를 지정합니다.

아홉 번째 및 열 번째 생성자는 여섯 번째와 같지만 rvalue 참조를 포함합니다.

마지막 생성자는 initializer_list<Type> 클래스의 개체를 사용하여 초기 제어되는 시퀀스를 지정합니다.

front

정방향 목록의 첫 번째 요소에 대한 참조를 반환합니다.

reference front();
const_reference front() const;

Return Value

비어 있지 않아야 하는 제어된 시퀀스의 첫 번째 요소에 대한 참조입니다.

get_allocator

정방향 목록을 생성하는 데 사용되는 할당자 개체의 복사본을 반환합니다.

allocator_type get_allocator() const;

Return Value

저장된 할당자 개체입니다.

insert_after

정방향 목록의 지정된 위치 뒤에 요소를 추가합니다.

iterator insert_after(const_iterator Where, const Type& Val);
void insert_after(const_iterator Where, size_type Count, const Type& Val);
void insert_after(const iterator Where, initializer_list<Type> IList);
iterator insert_after(const_iterator Where, Type&& Val);
template <class InputIterator>
    void insert_after(const_iterator Where, InputIterator First, InputIterator Last);

매개 변수

Where
대상 정방향 목록에서 첫 번째 요소가 삽입된 위치입니다.

Count
삽입할 요소의 수입니다.

첫째
삽입 범위의 시작입니다.

마지막
삽입 범위의 끝입니다.

Val
정방향 목록에 추가된 요소입니다.

IList
삽입할 initializer_list입니다.

Return Value

새로 삽입된 요소(첫 번째 및 마지막 멤버 함수만)를 지정하는 반복기입니다.

설명

각 멤버 함수는 제어되는 시퀀스에서 Where가 가리키는 요소 바로 뒤에 나머지 피연산자에서 지정한 시퀀스를 삽입합니다.

첫 번째 멤버 함수는 값이 Val요소를 삽입하고 새로 삽입된 요소를 지정하는 반복기를 반환합니다.

두 번째 멤버 함수는 값 Val의 Count 요소 반복삽입합니다.

InputIterator가 정수 형식이면 세 번째 멤버 함수는 insert(it, (size_type)First, (Type)Last)와 동일하게 동작합니다. 그렇지 않으면 시퀀스 [First, Last)를 삽입합니다. 대체 시퀀스는 초기 제어되는 시퀀스와 겹치면 안 됩니다.

네 번째 멤버 함수는 initializer_list<Type> 클래스의 개체로 지정되는 시퀀스를 삽입합니다.

마지막 멤버 함수는 첫 번째와 같지만 rvalue 참조를 포함합니다.

N 요소를 삽입하면 N 생성자가 호출됩니다. 다시 할당이 수행되지만 반복기나 참조가 무효화되지 않습니다.

하나 이상의 요소를 삽입하는 동안 예외가 throw되면 컨테이너는 변경되지 않고 예외가 다시 throw됩니다.

iterator

정방향 목록에 대한 반복기를 제공하는 형식입니다.

typedef implementation-defined iterator;

설명

iterator는 제어되는 시퀀스의 정방향 반복기로 사용될 수 있는 개체를 설명합니다. 구현 정의 형식의 동의어로 여기에 설명됩니다.

max_size

정방향 목록의 최대 길이를 반환합니다.

size_type max_size() const;

Return Value

개체가 제어할 수 있는 가장 긴 시퀀스의 길이입니다.

설명

merge

두 개의 정렬된 시퀀스를 선형 시간의 단일 정렬된 시퀀스로 결합합니다. 인수 목록에서 요소를 제거하고 이 forward_list에 삽입합니다. merge를 호출하기 전에 같은 비교 함수 개체별로 두 목록을 정렬해야 합니다. 결합된 목록은 해당 비교 함수 개체별로 정렬됩니다.

void merge(forward_list& right);
template <class Predicate>
    void merge(forward_list& right, Predicate comp);

매개 변수

right
병합할 소스 정방향 목록입니다.

comp
요소를 정렬하는 데 사용되는 비교 함수 개체입니다.

설명

forward_list::merge 에서 요소를 forward_list right제거하고 이 forward_list요소에 삽입합니다. 두 시퀀스는 모두 아래 설명된 동일한 조건자별로 순서가 지정되어야 합니다. 결합된 시퀀스도 비교 함수 개체별로 순서가 지정되어야 합니다.

위치 ij에서 요소를 지정하는 반복기 PiPj의 경우 첫 번째 멤버 함수는 i < j가 실행될 때마다 순서 !(*Pj < *Pi)를 적용합니다. (요소는 순서대로 ascending 정렬됩니다.) 두 번째 멤버 함수는 언제든지 i < j순서 ! comp(*Pj, *Pi) 를 적용합니다.

원래 제어되는 시퀀스의 요소 쌍은 결과 제어되는 시퀀스에서 반전되지 않습니다. 결과 제어되는 시퀀스의 요소 쌍이 같은 것으로 확인되면(!(*Pi < *Pj) && !(*Pj < *Pi)) 원래 제어되는 시퀀스의 요소가 right에서 제어되는 시퀀스의 요소 앞에 나타납니다.

comp가 예외를 throw하는 경우에만 예외가 발생합니다. 이 경우 제어되는 시퀀스는 지정되지 않은 순서로 남아 있고 예외가 다시 throw됩니다.

operator=

정방향 목록의 요소를 다른 정방향 목록의 복사본으로 바꿉니다.

forward_list& operator=(const forward_list& right);
forward_list& operator=(initializer_list<Type> IList);
forward_list& operator=(forward_list&& right);

매개 변수

right
정방향 목록으로 복사되는 정방향 목록입니다.

IList
Type 형식 요소의 시퀀스처럼 동작하는 중괄호로 묶인 이니셜라이저 목록입니다.

설명

첫 번째 멤버 연산자는 제어되는 시퀀스를 오른쪽으로 제어되는 시퀀스의 복사본으로 바꿉니다.

두 번째 멤버 연산자는 initializer_list<Type> 클래스 개체의 제어되는 시퀀스를 대체합니다.

세 번째 멤버 연산자는 첫 번째 멤버 연산자와 동일하지만 rvalue 참조를 포함합니다.

pointer

정방향 목록의 요소에 대한 포인터를 제공하는 형식입니다.

typedef typename Allocator::pointer pointer;

pop_front

정방향 목록의 시작 부분에 있는 요소를 삭제합니다.

void pop_front();

설명

비어 있지 않아야 하는 정방향 목록의 첫 번째 요소입니다.

멤버 함수는 예외를 throw하지 않습니다.

push_front

정방향 목록의 시작 부분에 요소를 추가합니다.

void push_front(const Type& val);
void push_front(Type&& val);

매개 변수

val
정방향 목록의 시작에 추가된 요소입니다.

설명

예외가 throw되면 컨테이너는 변경되지 않은 상태로 유지되며 예외가 다시 throw됩니다.

reference

정방향 목록의 요소에 대한 참조를 제공하는 형식입니다.

typedef typename Allocator::reference reference;

remove

정방향 목록에서 지정된 값과 일치하는 요소를 지웁니다.

void remove(const Type& val);

매개 변수

val
요소에 값이 있는 경우 목록에서 해당 요소가 제거됩니다.

설명

멤버 함수는 *P == val인 경우 반복기 P로 지정된 모든 요소를 제어되는 시퀀스에서 제거합니다.

멤버 함수는 예외를 throw하지 않습니다.

remove_if

지정된 조건자를 충족하는 요소를 정방향 목록에서 지웁니다.

template <class Predicate>
    void remove_if(Predicate pred);

매개 변수

pred
요소로 충족된 경우 목록에서 요소가 삭제되는 단항 조건자입니다.

설명

멤버 함수는 pred(*P)가 true인 경우 반복기 P로 지정된 모든 요소를 제어되는 시퀀스에서 제거합니다.

예외는 미리 지정된 경우 예외를 throw하는 경우에만 발생합니다. 이 경우 제어되는 시퀀스는 지정되지 않은 상태로 남아 있고 예외가 다시 throw됩니다.

크기 조정

정방향 목록의 새 크기를 지정합니다.

void resize(size_type _Newsize);
void resize(size_type _Newsize, const Type& val);

매개 변수

_Newsize
크기 조정된 정방향 목록의 요소 수입니다.

val
안쪽 여백에 사용할 값입니다.

설명

멤버 함수는 모두 목록의 요소 수가 _Newsize 있는지 확인합니다. 제어되는 시퀀스를 더 길게 만들어야 하는 경우 첫 번째 멤버 함수는 값 Type()이 있는 요소를 추가하고 두 번째 멤버 함수는 value val을 사용하여 요소를 추가합니다. 제어되는 시퀀스 길이를 줄이기 위해 두 멤버 함수는 모두 실제로 erase_after(begin() + _Newsize - 1, end())를 호출합니다.

reverse

정방향 목록에 요소가 나타나는 순서를 반대로 바꿉니다.

void reverse();

size_type

두 요소 사이의 부호가 없는 거리를 나타내는 형식입니다.

typedef typename Allocator::size_type size_type;

설명

부호 없는 정수 형식은 제어되는 시퀀스의 길이를 나타낼 수 있는 개체를 설명합니다.

sort

오름차순 또는 조건자를 통해 지정된 순서로 요소를 정렬합니다.

void sort();
template <class Predicate>
void sort(Predicate pred);

매개 변수

pred
순서 지정 조건자입니다.

설명

두 멤버 함수는 모두 제어되는 시퀀스에서 요소의 순서를 아래 설명된 조건자별로 지정합니다.

위치 ij에서 요소를 지정하는 반복기 PiPj의 경우 첫 번째 멤버 함수는 i < j가 실행될 때마다 순서 !(*Pj < *Pi)를 적용합니다. (요소는 순서대로 ascending 정렬됩니다.) 멤버 템플릿 함수는 언제든지 i < j순서 ! pred(*Pj, *Pi) 를 적용합니다. 원래 제어되는 시퀀스의 순서가 지정된 요소 쌍은 결과 제어되는 시퀀스에서 반전되지 않습니다. 정렬이 안정적입니다.

예외는 미리 지정된 경우 예외를 throw하는 경우에만 발생합니다. 이 경우 제어되는 시퀀스는 지정되지 않은 순서로 남아 있고 예외가 다시 throw됩니다.

splice_after

요소를 원본 forward_list에서 제거한 다음 대상 forward_list에 삽입합니다.

// insert the entire source forward_list
void splice_after(const_iterator Where, forward_list& Source);
void splice_after(const_iterator Where, forward_list&& Source);

// insert one element of the source forward_list
void splice_after(const_iterator Where, forward_list& Source, const_iterator Iter);
void splice_after(const_iterator Where, forward_list&& Source, const_iterator Iter);

// insert a range of elements from the source forward_list
void splice_after(
    const_iterator Where,
    forward_list& Source,
    const_iterator First,
    const_iterator Last);

void splice_after(
    const_iterator Where,
    forward_list&& Source,
    const_iterator First,
    const_iterator Last);

매개 변수

Where
대상 forward_list의 위치로, 이 위치 앞에서 삽입합니다.

Source
대상 forward_list으로 삽입할 원본 forward_list입니다.

반복기
원본 forward_list에서 삽입할 요소입니다.

첫째
원본 forward_list에서 삽입할 범위 내 첫 번째 요소입니다.

마지막
원본 forward_list에서 삽입할 범위를 벗어난 첫 번째 위치입니다.

설명

멤버 함수의 첫 번째 쌍은 Where가 가리키는 제어되는 시퀀스의 요소 바로 뒤에 Source에서 제어되는 시퀀스를 삽입합니다. 또한 원본에서 모든 요소를 제거합니다. &Sourcethis와 같으면 안 됩니다.

두 번째 멤버 함수 쌍은 Source에서 제어하는 시퀀스에서 Iter 바로 뒤에 있는 요소를 제거하고 Where가 가리키는 제어되는 시퀀스의 요소 바로 뒤에 삽입합니다. Where == Iter || Where == ++Iter인 경우 아무 것도 변경되지 않습니다.

세 번째 멤버 함수 쌍(범위가 지정된 스플라이스)은 제어되는 (First, Last) 시퀀스의 요소 바로 뒤에 Source가 제어하는 시퀀스에서 지정된 하위 범위를 삽입합니다. 원본에서 제어하는 시퀀스에서 원래 하위 범위도 제거합니다. (이 경우 &Source == this범위에 (First, Last) Where가 가리키는 요소가 포함되어서는 안 됩니다.)

범위가 지정된 스플라이스가 N개 요소 및 &Source != this를 삽입하면 iterator 클래스의 개체가 N배 증분됩니다.

스플라이스된 요소를 지정하는 어떤 반복기, 포인터 또는 참조도 잘못되지 않습니다.

예시

// forward_list_splice_after.cpp
// compile with: /EHsc /W4
#include <forward_list>
#include <iostream>

using namespace std;

template <typename S> void print(const S& s) {
    for (const auto& p : s) {
        cout << "(" << p << ") ";
    }

    cout << endl;
}

int main()
{
    forward_list<int> c1{ 10, 11 };
    forward_list<int> c2{ 20, 21, 22 };
    forward_list<int> c3{ 30, 31 };
    forward_list<int> c4{ 40, 41, 42, 43 };

    forward_list<int>::iterator where_iter;
    forward_list<int>::iterator first_iter;
    forward_list<int>::iterator last_iter;

    cout << "Beginning state of lists:" << endl;
    cout << "c1 = ";
    print(c1);
    cout << "c2 = ";
    print(c2);
    cout << "c3 = ";
    print(c3);
    cout << "c4 = ";
    print(c4);

    where_iter = c2.begin();
    ++where_iter; // start at second element
    c2.splice_after(where_iter, c1);
    cout << "After splicing c1 into c2:" << endl;
    cout << "c1 = ";
    print(c1);
    cout << "c2 = ";
    print(c2);

    first_iter = c3.begin();
    c2.splice_after(where_iter, c3, first_iter);
    cout << "After splicing the first element of c3 into c2:" << endl;
    cout << "c3 = ";
    print(c3);
    cout << "c2 = ";
    print(c2);

    first_iter = c4.begin();
    last_iter = c4.end();
    // set up to get the middle elements
    ++first_iter;
    c2.splice_after(where_iter, c4, first_iter, last_iter);
    cout << "After splicing a range of c4 into c2:" << endl;
    cout << "c4 = ";
    print(c4);
    cout << "c2 = ";
    print(c2);
}
Beginning state of lists:c1 = (10) (11)c2 = (20) (21) (22)c3 = (30) (31)c4 = (40) (41) (42) (43)After splicing c1 into c2:c1 =c2 = (20) (21) (10) (11) (22)After splicing the first element of c3 into c2:c3 = (30)c2 = (20) (21) (31) (10) (11) (22)After splicing a range of c4 into c2:c4 = (40) (41)c2 = (20) (21) (42) (43) (31) (10) (11) (22)

swap

두 정방향 목록의 요소를 교환합니다.

void swap(forward_list& right);

매개 변수

right
교환할 요소를 제공하는 정방향 목록입니다.

설명

멤버 함수는 제어된 시퀀스를 오른쪽 간에 *this 교환합니다. get_allocator() == right.get_allocator()인 경우 일정한 시간에 이 작업을 수행하고, 예외를 throw하지 않고, 두 개의 제어되는 시퀀스에서 요소를 지정하는 참조, 포인터 또는 반복기를 무효화하지 않습니다. 그렇지 않으면 제어되는 두 시퀀스의 요소 수에 비례하여 요소 할당 및 생성자 호출을 수행합니다.

unique

동일한 요소의 모든 연속 그룹에서 첫 번째 요소를 제외하고 모두 제거합니다.

void unique();
template <class BinaryPredicate>
void unique(BinaryPredicate comp);

매개 변수

comp
연속 요소를 비교하는 데 사용되는 이진 조건자입니다.

설명

각 고유 요소의 첫 번째 요소를 유지하고 나머지를 제거합니다. 목록에서 동일한 값의 요소가 인접하도록 요소를 정렬해야 합니다.

첫 번째 멤버 함수는 이전 요소와 같은 것으로 확인된 모든 요소를 제어되는 시퀀스에서 제거합니다. 위치 ij에서 요소를 지정하는 반복기 PiPj의 경우 두번째 멤버 함수는 i + 1 == j && comp(*Pi, *Pj)에 해당하는 모든 요소를 제거합니다.

제어된 길이 N 시퀀스(> 0)의 경우 조건자가 comp(*Pi, *Pj) 평가됩니다 N - 1 .

comp가 예외를 throw하는 경우에만 예외가 발생합니다. 이 경우 제어되는 시퀀스는 지정되지 않은 상태로 남아 있고 예외가 다시 throw됩니다.

value_type

정방향 목록에 저장된 요소의 형식을 나타내는 형식입니다.

typedef typename Allocator::value_type value_type;

설명

이 형식은 템플릿 매개 변수 Type의 동의어입니다.