C++
std :: forward_list
수색…
소개
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