수색…


소개

std::forward_list 는 컨테이너의 어느 위치에서나 요소를 빠르게 삽입하고 제거 할 수있는 컨테이너입니다. 빠른 임의 액세스는 지원되지 않습니다. 이것은 단일 링크리스트로서 구현되고 기본적으로 C에서의 구현에 비해 오버 헤드가 없다. std::list 와 비교할 때이 컨테이너는 양방향 반복이 필요하지 않을 때보다 공간 효율적인 저장을 제공한다.

비고

목록 내 또는 여러 목록에있는 요소를 추가, 제거 및 이동해도 현재 목록의 다른 요소를 참조하는 반복기는 무효화되지 않습니다. 그러나 요소를 참조하는 반복기 또는 참조는 해당 요소가 목록에서 제거되면 (erase_after를 통해) 무효화됩니다. std :: forward_list는 Container의 요구 사항을 만족합니다 (크기 멤버 함수와 그 연산자 ==의 복잡성은 항상 선형입니다), AllocatorAwareContainer 및 SequenceContainer를 제외합니다.

#include <forward_list>
#include <string>
#include <iostream>

template<typename T>
std::ostream& operator<<(std::ostream& s, const std::forward_list<T>& v) {
    s.put('[');
    char comma[3] = {'\0', ' ', '\0'};
    for (const auto& e : v) {
        s << comma << e;
        comma[0] = ',';
    }
    return s << ']';
}

int main() 
{
    // c++11 initializer list syntax:
    std::forward_list<std::string> words1 {"the", "frogurt", "is", "also", "cursed"};
    std::cout << "words1: " << words1 << '\n';
 
    // words2 == words1
    std::forward_list<std::string> words2(words1.begin(), words1.end());
    std::cout << "words2: " << words2 << '\n';
 
    // words3 == words1
    std::forward_list<std::string> words3(words1);
    std::cout << "words3: " << words3 << '\n';
 
    // words4 is {"Mo", "Mo", "Mo", "Mo", "Mo"}
    std::forward_list<std::string> words4(5, "Mo");
    std::cout << "words4: " << words4 << '\n';
}

산출:

words1: [the, frogurt, is, also, cursed]
words2: [the, frogurt, is, also, cursed]
words3: [the, frogurt, is, also, cursed]
words4: [Mo, Mo, Mo, Mo, Mo]

행동 양식

메서드 이름 정의
operator= 컨테이너에 값을 할당한다.
assign 컨테이너에 값을 할당한다.
get_allocator 연관된 할당자를 리턴한다.
------ ------
요소 액세스
front 첫 번째 요소에 액세스
------ ------
반복기
before_begi n 시작할 때까지 요소에 반복자를 반환합니다.
cbefore_begin 시작할 때까지 요소에 상수 반복자를 반환합니다.
begin 반복자를 처음으로 반환합니다.
cbegin const 반복자를 처음으로 반환합니다.
end 반복자를 끝까지 반환합니다.
cend 반복자를 끝에 반환합니다.
생산 능력
empty 컨테이너가 비어 있는지 확인합니다.
max_size 가능한 최대 요소 수를 반환합니다.
수정 자
clear 내용을 지우다.
insert_after 요소 다음에 요소를 삽입합니다.
emplace_after 요소 다음에 요소를 생성한다.
erase_after 요소 뒤에있는 요소를 지 웁니다.
push_front 요소를 처음에 삽입한다.
emplace_front 처음에 요소를 제자리에서 구성한다.
pop_front 첫 번째 요소를 제거합니다.
resize 저장된 요소의 수를 변경합니다.
swap 내용을 바꾼다.
운영
merge 두 개의 정렬 된 목록을 병합합니다.
splice_after 요소를 다른 forward_list에서 이동합니다.
remove 특정 기준을 만족하는 요소를 제거합니다.
remove_if 특정 기준을 만족하는 요소를 제거합니다.
reverse 요소의 순서를 바꾼다.
unique 연속 된 중복 요소를 제거합니다.
sort 요소를 정렬합니다.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow