concurrent_vector 클래스
concurrent_vector
클래스는 모든 요소에 대해 임의 액세스를 허용하는 시퀀스 컨테이너 클래스입니다. 동시성으로부터 안전한 추가, 요소 액세스, 반복기 액세스 및 반복기 통과 작업을 사용할 수 있게 합니다. 여기서 동시성 안전은 포인터 또는 반복기가 항상 유효함을 의미합니다. 요소 초기화 또는 특정 순회 순서를 보장하지 않습니다.
구문
template<typename T, class _Ax>
class concurrent_vector: protected details::_Allocator_base<T,
_Ax>,
private details::_Concurrent_vector_base_v4;
매개 변수
T
벡터에 저장할 요소의 데이터 형식입니다.
_도끼
동시 벡터에 대한 메모리 할당 및 할당 취소에 대한 세부 정보를 캡슐화하는 저장된 할당자 개체를 나타내는 형식입니다. 이 인수는 선택 사항이며 기본값은 allocator<T>
입니다.
멤버
공용 Typedefs
속성 | 설명 |
---|---|
allocator_type |
동시 벡터의 할당자 클래스를 나타내는 형식입니다. |
const_iterator |
동시 벡터에서 요소를 읽을 const 수 있는 임의 액세스 반복기를 제공하는 형식입니다. |
const_pointer |
동시 벡터의 요소에 대한 const 포인터를 제공하는 형식입니다. |
const_reference |
작업을 읽고 수행하기 const 위해 const 동시 벡터에 저장된 요소에 대한 참조를 제공하는 형식입니다. |
const_reverse_iterator |
동시 벡터의 모든 const 요소를 읽을 수 있는 임의 액세스 반복기를 제공하는 형식입니다. |
difference_type |
동시 벡터의 두 요소 간에 서명된 거리를 제공하는 형식입니다. |
iterator |
동시 벡터의 모든 요소를 읽을 수 있는 임의 액세스 반복기를 제공하는 형식입니다. 반복기를 사용하여 요소를 수정해도 동시성이 안전하지 않습니다. |
pointer |
동시 벡터의 요소에 대한 포인터를 제공하는 형식입니다. |
reference |
동시 벡터에 저장된 요소에 대한 참조를 제공하는 형식입니다. |
reverse_iterator |
역방향 동시 벡터의 모든 요소를 읽을 수 있는 임의 액세스 반복기를 제공하는 형식입니다. 반복기를 사용하여 요소를 수정해도 동시성이 안전하지 않습니다. |
size_type |
동시 벡터의 요소 수를 계산하는 형식입니다. |
value_type |
동시 벡터에 저장된 데이터 형식을 나타내는 형식입니다. |
공용 생성자
속성 | 설명 |
---|---|
concurrent_vector | 오버로드됨. 동시 벡터를 생성합니다. |
~concurrent_vector 소멸자 | 모든 요소를 지우고 이 동시 벡터를 삭제합니다. |
공용 메서드
이름 | 설명 |
---|---|
assign | 오버로드됨. 동시 벡터의 요소를 지우고 반복기 범위 [_Begin , _End )에 지정된 값 또는 복사본을 _Item 할당 _N 합니다. 이 메서드는 동시성이 안전하지 않습니다. |
at | 오버로드됨. 동시 벡터의 지정된 인덱스에서 요소에 대한 액세스를 제공합니다. 이 메서드는 읽기 작업에 대해 동시성 안전하며, 값 _Index 이 동시 벡터의 크기보다 작은지 확인하는 한 벡터를 증가시키는 동안에도 안전합니다. |
back | 오버로드됨. 동시 벡터의 마지막 요소에 대한 참조 또는 const 참조를 반환합니다. 동시 벡터가 비어 있으면 반환 값이 정의되지 않습니다. 이 메서드는 동시성 안전입니다. |
begin | 오버로드됨. 형식 iterator 의 반복기 또는 const_iterator 동시 벡터의 시작 부분을 반환합니다. 이 메서드는 동시성 안전입니다. |
capacity | 더 많은 메모리를 할당하지 않고도 동시 벡터가 증가할 수 있는 최대 크기를 반환합니다. 이 메서드는 동시성 안전입니다. |
cbegin | 동시 벡터의 시작 부분에 대한 형식 const_iterator 의 반복기를 반환합니다. 이 메서드는 동시성 안전입니다. |
cend | 동시 벡터의 끝에 대한 형식 const_iterator 의 반복기를 반환합니다. 이 메서드는 동시성 안전입니다. |
clear | 동시 벡터의 모든 요소를 지웁니다. 이 메서드는 동시성이 안전하지 않습니다. |
crbegin | 동시 벡터의 시작 부분에 대한 형식 const_reverse_iterator 의 반복기를 반환합니다. 이 메서드는 동시성 안전입니다. |
crend | 동시 벡터의 끝에 대한 형식 const_reverse_iterator 의 반복기를 반환합니다. 이 메서드는 동시성 안전입니다. |
empty | 이 메서드가 호출될 때 동시 벡터가 비어 있는지 테스트합니다. 이 메서드는 동시성 안전입니다. |
end | 오버로드됨. 형식 iterator 의 반복기를 반환하거나 const_iterator 동시 벡터의 끝에 반환합니다. 이 메서드는 동시성 안전입니다. |
front | 오버로드됨. 동시 벡터의 첫 번째 요소에 대한 참조 또는 const 참조를 반환합니다. 동시 벡터가 비어 있으면 반환 값이 정의되지 않습니다. 이 메서드는 동시성 안전입니다. |
get_allocator | 동시 벡터를 생성하는 데 사용되는 할당자의 복사본을 반환합니다. 이 메서드는 동시성 안전입니다. |
grow_by | 오버로드됨. 요소별로 이 동시 벡터를 _Delta 확장합니다. 이 메서드는 동시성 안전입니다. |
grow_to_at_least | 이 동시 벡터는 적어도 _N 요소가 될 때까지 증가합니다. 이 메서드는 동시성 안전입니다. |
max_size | 동시 벡터에서 보유할 수 있는 최대 요소 수를 반환합니다. 이 메서드는 동시성 안전입니다. |
push_back | 오버로드됨. 지정된 항목을 동시 벡터의 끝에 추가합니다. 이 메서드는 동시성 안전입니다. |
rbegin | 오버로드됨. 형식 reverse_iterator 의 반복기 또는 const_reverse_iterator 동시 벡터의 시작 부분을 반환합니다. 이 메서드는 동시성 안전입니다. |
rend | 오버로드됨. 형식 reverse_iterator 의 반복기를 반환하거나 const_reverse_iterator 동시 벡터의 끝에 반환합니다. 이 메서드는 동시성 안전입니다. |
reserve | 나중에 더 많은 메모리를 할당하지 않고도 동시 벡터 크기를 _N 늘릴 수 있는 충분한 공간을 할당합니다. 이 메서드는 동시성이 안전하지 않습니다. |
resize | 오버로드됨. 동시 벡터의 크기를 요청된 크기로 변경하여 필요에 따라 요소를 삭제하거나 추가합니다. 이 메서드는 동시성이 안전하지 않습니다. |
shrink_to_fit | 동시 벡터의 내부 표현을 압축하여 조각화를 줄이고 메모리 사용량을 최적화합니다. 이 메서드는 동시성이 안전하지 않습니다. |
size | 동시 벡터의 요소 수를 반환합니다. 이 메서드는 동시성 안전입니다. |
swap | 두 동시 벡터의 내용을 바꿉니다. 이 메서드는 동시성이 안전하지 않습니다. |
Public 연산자
속성 | 설명 |
---|---|
operator[] | 오버로드됨. 동시 벡터의 지정된 인덱스에서 요소에 대한 액세스를 제공합니다. 이 메서드는 읽기 작업에 대해 동시성 안전하며, 값 _Index 이 동시 벡터의 크기보다 작은지 확인하는 한 벡터를 증가시키는 동안에도 안전합니다. |
operator= | 오버로드됨. 다른 concurrent_vector 개체의 내용을 이 개체에 할당합니다. 이 메서드는 동시성이 안전하지 않습니다. |
설명
클래스에 대한 concurrent_vector
자세한 내용은 병렬 컨테이너 및 개체를 참조 하세요.
상속 계층 구조
_Concurrent_vector_base_v4
_Allocator_base
concurrent_vector
요구 사항
헤더: concurrent_vector.h
네임스페이스: 동시성
할당
동시 벡터의 요소를 지우고 반복기 범위 [_Begin
, _End
)에 지정된 값 또는 복사본을 _Item
할당 _N
합니다. 이 메서드는 동시성이 안전하지 않습니다.
void assign(
size_type _N,
const_reference _Item);
template<class _InputIterator>
void assign(_InputIterator _Begin,
_InputIterator _End);
매개 변수
_InputIterator
지정된 반복기의 형식입니다.
_N
동시 벡터로 복사할 항목 수입니다.
_항목
동시 벡터를 채우는 데 사용되는 값에 대한 참조입니다.
_시작되다
원본 범위의 첫 번째 요소에 대한 반복기입니다.
_끝
원본 범위의 마지막 요소를 지난 반복기입니다.
설명
assign
은 동시성 안전이 아닙니다. 이 메서드를 호출할 때 다른 스레드가 동시 벡터에서 메서드를 호출하지 않는지 확인해야 합니다.
시간
동시 벡터의 지정된 인덱스에서 요소에 대한 액세스를 제공합니다. 이 메서드는 읽기 작업에 대해 동시성 안전하며, 값 _Index
이 동시 벡터의 크기보다 작은지 확인하는 한 벡터를 증가시키는 동안에도 안전합니다.
reference at(size_type _Index);
const_reference at(size_type _Index) const;
매개 변수
_Index
검색할 요소의 인덱스입니다.
Return Value
지정된 인덱스에서 항목에 대한 참조입니다.
설명
비 const
참조를 반환하는 함수 at
의 버전은 다른 스레드의 요소에 동시에 쓰는 데 사용할 수 없습니다. 동일한 데이터 요소에 동시 읽기 및 쓰기 작업을 동기화하려면 다른 동기화 개체를 사용해야 합니다.
메서드는 동시 벡터의 크기보다 크거나 같은 경우 _Index
와 range_error
인덱스가 벡터의 끊어진 부분에 대한 경우 throw out_of_range
됩니다. 벡터가 손상되는 방법에 대한 자세한 내용은 병렬 컨테이너 및 개체를 참조 하세요.
back
동시 벡터의 마지막 요소에 대한 참조 또는 const
참조를 반환합니다. 동시 벡터가 비어 있으면 반환 값이 정의되지 않습니다. 이 메서드는 동시성 안전입니다.
reference back();
const_reference back() const;
Return Value
동시 벡터의 마지막 요소에 대한 참조 또는 const
참조입니다.
begin
형식 iterator
의 반복기 또는 const_iterator
동시 벡터의 시작 부분을 반환합니다. 이 메서드는 동시성 안전입니다.
iterator begin();
const_iterator begin() const;
Return Value
형식 iterator
의 반복기 또는 const_iterator
동시 벡터의 시작 부분입니다.
capacity
더 많은 메모리를 할당하지 않고도 동시 벡터가 증가할 수 있는 최대 크기를 반환합니다. 이 메서드는 동시성 안전입니다.
size_type capacity() const;
Return Value
동시 벡터가 더 많은 메모리를 할당하지 않고도 확장할 수 있는 최대 크기입니다.
설명
C++ 표준 라이브러리와 vector
달리 개체는 더 많은 메모리를 concurrent_vector
할당하는 경우 기존 요소를 이동하지 않습니다.
cbegin
동시 벡터의 시작 부분에 대한 형식 const_iterator
의 반복기를 반환합니다. 이 메서드는 동시성 안전입니다.
const_iterator cbegin() const;
Return Value
동시 벡터의 시작 부분에 대한 형식 const_iterator
의 반복기입니다.
cend
동시 벡터의 끝에 대한 형식 const_iterator
의 반복기를 반환합니다. 이 메서드는 동시성 안전입니다.
const_iterator cend() const;
Return Value
동시 벡터의 끝에 대한 형식 const_iterator
의 반복기입니다.
clear
동시 벡터의 모든 요소를 지웁니다. 이 메서드는 동시성이 안전하지 않습니다.
void clear();
설명
clear
은 동시성 안전이 아닙니다. 이 메서드를 호출할 때 다른 스레드가 동시 벡터에서 메서드를 호출하지 않는지 확인해야 합니다. clear
내부 배열을 해제하지 않습니다. 내부 배열을 해제하려면 다음clear
에서 함수 shrink_to_fit
를 호출합니다.
concurrent_vector
동시 벡터를 생성합니다.
explicit concurrent_vector(
const allocator_type& _Al = allocator_type());
concurrent_vector(
const concurrent_vector& _Vector);
template<class M>
concurrent_vector(
const concurrent_vector<T,
M>& _Vector,
const allocator_type& _Al = allocator_type());
concurrent_vector(
concurrent_vector&& _Vector);
explicit concurrent_vector(
size_type _N);
concurrent_vector(
size_type _N,
const_reference _Item,
const allocator_type& _Al = allocator_type());
template<class _InputIterator>
concurrent_vector(_InputIterator _Begin,
_InputIterator _End,
const allocator_type& _Al = allocator_type());
매개 변수
M
원본 벡터의 할당자 형식입니다.
_InputIterator
입력 반복기의 형식입니다.
_알
이 개체에 사용할 할당자 클래스입니다.
_벡터
요소를 복사해 오거나 이동해 올 소스 concurrent_vector
개체입니다.
_N
concurrent_vector
개체의 초기 용량입니다.
_항목
생성된 개체의 요소 값입니다.
_시작되다
복사할 요소의 범위에서 첫 번째 요소의 위치입니다.
_끝
복사할 요소의 범위를 벗어난 첫 번째 요소의 위치입니다.
설명
모든 생성자는 할당자 개체 _Al
를 저장하고 벡터를 초기화합니다.
첫 번째 생성자는 빈 초기 벡터를 지정하고 할당자 형식을 명시적으로 지정합니다. 사용할 수 있습니다.
두 번째 및 세 번째 생성자는 동시 벡터 _Vector
의 복사본을 지정합니다.
네 번째 생성자는 동시 벡터 _Vector
의 이동을 지정합니다.
다섯 번째 생성자는 클래스T
에 대한 기본값 요소의 지정된 숫자(_N
)의 반복을 지정합니다.
여섯 번째 생성자는 값_Item
의 (_N
) 요소의 반복을 지정합니다.
마지막 생성자는 반복기 범위 [ _Begin
, _End
)에서 제공하는 값을 지정합니다.
~concurrent_vector
모든 요소를 지우고 이 동시 벡터를 삭제합니다.
~concurrent_vector();
crbegin
동시 벡터의 시작 부분에 대한 형식 const_reverse_iterator
의 반복기를 반환합니다. 이 메서드는 동시성 안전입니다.
const_reverse_iterator crbegin() const;
Return Value
동시 벡터의 시작 부분에 대한 형식 const_reverse_iterator
의 반복기입니다.
crend
동시 벡터의 끝에 대한 형식 const_reverse_iterator
의 반복기를 반환합니다. 이 메서드는 동시성 안전입니다.
const_reverse_iterator crend() const;
Return Value
동시 벡터의 끝에 대한 형식 const_reverse_iterator
의 반복기입니다.
empty
이 메서드가 호출될 때 동시 벡터가 비어 있는지 테스트합니다. 이 메서드는 동시성 안전입니다.
bool empty() const;
Return Value
true
함수가 호출 false
된 시점에 벡터가 비어 있으면 그렇지 않습니다.
end
형식 iterator
의 반복기를 반환하거나 const_iterator
동시 벡터의 끝에 반환합니다. 이 메서드는 동시성 안전입니다.
iterator end();
const_iterator end() const;
Return Value
형식 iterator
의 반복기 또는 const_iterator
동시 벡터의 끝입니다.
front
동시 벡터의 첫 번째 요소에 대한 참조 또는 const
참조를 반환합니다. 동시 벡터가 비어 있으면 반환 값이 정의되지 않습니다. 이 메서드는 동시성 안전입니다.
reference front();
const_reference front() const;
Return Value
동시 벡터의 첫 번째 요소에 대한 참조 또는 const
참조입니다.
get_allocator
동시 벡터를 생성하는 데 사용되는 할당자의 복사본을 반환합니다. 이 메서드는 동시성 안전입니다.
allocator_type get_allocator() const;
Return Value
개체를 생성하는 데 사용되는 할당자의 복사본입니다 concurrent_vector
.
grow_by
요소별로 이 동시 벡터를 _Delta
확장합니다. 이 메서드는 동시성 안전입니다.
iterator grow_by(
size_type _Delta);
iterator grow_by(
size_type _Delta,
const_reference _Item);
매개 변수
_삼각주
개체에 추가할 요소의 수입니다.
_항목
새 요소를 초기화할 값입니다.
Return Value
첫 번째 항목에 추가된 반복기입니다.
설명
지정하지 않으면 _Item
새 요소가 기본 생성됩니다.
grow_to_at_least
이 동시 벡터는 적어도 _N
요소가 될 때까지 증가합니다. 이 메서드는 동시성 안전입니다.
iterator grow_to_at_least(size_type _N);
매개 변수
_N
개체의 새 최소 크기입니다 concurrent_vector
.
Return Value
추가된 시퀀스의 시작을 가리키는 반복기이거나 추가된 요소가 없는 경우 인덱 _N
스의 요소를 가리킵니다.
max_size
동시 벡터에서 보유할 수 있는 최대 요소 수를 반환합니다. 이 메서드는 동시성 안전입니다.
size_type max_size() const;
Return Value
개체가 보유할 수 있는 concurrent_vector
최대 요소 수입니다.
operator=
다른 concurrent_vector
개체의 내용을 이 개체에 할당합니다. 이 메서드는 동시성이 안전하지 않습니다.
concurrent_vector& operator= (
const concurrent_vector& _Vector);
template<class M>
concurrent_vector& operator= (
const concurrent_vector<T, M>& _Vector);
concurrent_vector& operator= (
concurrent_vector&& _Vector);
매개 변수
M
원본 벡터의 할당자 형식입니다.
_벡터
원본 concurrent_vector
개체입니다.
Return Value
이 concurrent_vector
개체에 대한 참조입니다.
operator[]
동시 벡터의 지정된 인덱스에서 요소에 대한 액세스를 제공합니다. 이 메서드는 읽기 작업에 대해 동시성 안전하며, 값 _Index
이 동시 벡터의 크기보다 작은지 확인하는 한 벡터를 증가시키는 동안에도 안전합니다.
reference operator[](size_type _index);
const_reference operator[](size_type _index) const;
매개 변수
_Index
검색할 요소의 인덱스입니다.
Return Value
지정된 인덱스에서 항목에 대한 참조입니다.
설명
비 참조를 const
반환하는 버전은 operator []
다른 스레드의 요소에 동시에 쓰는 데 사용할 수 없습니다. 동일한 데이터 요소에 동시 읽기 및 쓰기 작업을 동기화하려면 다른 동기화 개체를 사용해야 합니다.
동시 벡터에 유효한 인덱스인지 확인하기 _Index
위해 경계 검사가 수행되지 않습니다.
push_back
지정된 항목을 동시 벡터의 끝에 추가합니다. 이 메서드는 동시성 안전입니다.
iterator push_back(const_reference _Item);
iterator push_back(T&& _Item);
매개 변수
_항목
추가할 값입니다.
Return Value
항목에 대한 반복기가 추가되었습니다.
rbegin
형식 reverse_iterator
의 반복기 또는 const_reverse_iterator
동시 벡터의 시작 부분을 반환합니다. 이 메서드는 동시성 안전입니다.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Return Value
형식 reverse_iterator
의 반복기 또는 const_reverse_iterator
동시 벡터의 시작 부분입니다.
rend
형식 reverse_iterator
의 반복기를 반환하거나 const_reverse_iterator
동시 벡터의 끝에 반환합니다. 이 메서드는 동시성 안전입니다.
reverse_iterator rend();
const_reverse_iterator rend() const;
Return Value
형식 reverse_iterator
의 반복기 또는 const_reverse_iterator
동시 벡터의 끝입니다.
reserve
나중에 더 많은 메모리를 할당하지 않고도 동시 벡터 크기를 _N
늘릴 수 있는 충분한 공간을 할당합니다. 이 메서드는 동시성이 안전하지 않습니다.
void reserve(size_type _N);
매개 변수
_N
공간을 예약할 요소의 수입니다.
설명
reserve
은 동시성 안전이 아닙니다. 이 메서드를 호출할 때 다른 스레드가 동시 벡터에서 메서드를 호출하지 않는지 확인해야 합니다. 메서드가 반환된 후의 동시 벡터 용량은 요청된 예약보다 클 수 있습니다.
크기 조정
동시 벡터의 크기를 요청된 크기로 변경하여 필요에 따라 요소를 삭제하거나 추가합니다. 이 메서드는 동시성이 안전하지 않습니다.
void resize(
size_type _N);
void resize(
size_type _N,
const T& val);
매개 변수
_N
동시 벡터의 새 크기입니다.
val
새 크기가 원래 크기보다 크면 새 요소의 값이 벡터에 추가됩니다. 값을 생략하면 새 개체에 해당 형식의 기본값이 할당됩니다.
설명
컨테이너의 크기가 요청된 크기보다 작으면 요청된 크기에 도달할 때까지 요소가 벡터에 추가됩니다. 컨테이너의 크기가 요청된 크기보다 크면 컨테이너의 끝에 가장 가까운 요소는 컨테이너가 크기에 _N
도달할 때까지 삭제됩니다. 컨테이너의 현재 크기와 요청된 크기가 동일하면 아무런 작업도 실행되지 않습니다.
resize
은 동시성이 안전하지 않습니다. 이 메서드를 호출할 때 다른 스레드가 동시 벡터에서 메서드를 호출하지 않는지 확인해야 합니다.
shrink_to_fit
동시 벡터의 내부 표현을 압축하여 조각화를 줄이고 메모리 사용량을 최적화합니다. 이 메서드는 동시성이 안전하지 않습니다.
void shrink_to_fit();
설명
이 메서드는 내부적으로 메모리 이동 요소를 다시 할당하여 모든 반복기를 무효화합니다. shrink_to_fit
은 동시성 안전이 아닙니다. 이 함수를 호출할 때 다른 스레드가 동시 벡터에서 메서드를 호출하지 않는지 확인해야 합니다.
크기
동시 벡터의 요소 수를 반환합니다. 이 메서드는 동시성 안전입니다.
size_type size() const;
Return Value
이 concurrent_vector
개체의 요소 수입니다.
설명
반환된 크기는 함수 push_back
에 대한 호출에 의해 추가된 모든 요소를 포함하거나 이 메서드를 호출하기 전에 완료된 증가 작업을 포함하도록 보장됩니다. 그러나 모든 성장 메서드에 대한 동시 호출을 통해 할당되었지만 아직 생성 중인 요소가 포함될 수도 있습니다.
swap
두 동시 벡터의 내용을 바꿉니다. 이 메서드는 동시성이 안전하지 않습니다.
void swap(concurrent_vector& _Vector);
매개 변수
_벡터
concurrent_vector
콘텐츠를 교환할 개체입니다.