다음을 통해 공유


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 의 버전은 다른 스레드의 요소에 동시에 쓰는 데 사용할 수 없습니다. 동일한 데이터 요소에 동시 읽기 및 쓰기 작업을 동기화하려면 다른 동기화 개체를 사용해야 합니다.

메서드는 동시 벡터의 크기보다 크거나 같은 경우 _Indexrange_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 콘텐츠를 교환할 개체입니다.

참고 항목

concurrency 네임스페이스
병렬 컨테이너 및 개체