벡터는 요소가 삽입되거나 삭제될 때 자동으로 크기를 조정하고 해당 저장 공간을 컨테이너에서 자동으로 처리하는 기능을 갖춘 동적 배열과 동일합니다. 벡터 요소는 반복자를 사용하여 액세스하고 탐색할 수 있도록 연속 저장소에 배치됩니다. 벡터에서는 데이터가 끝에 삽입됩니다. 때로는 배열을 확장해야 할 수도 있으므로 마지막에 삽입하는 데 차등 시간이 걸립니다. 크기 조정이 발생하지 않기 때문에 마지막 요소를 제거하는 데는 일정한 시간만 걸립니다. 처음이나 중간에 삽입하고 지우는 것은 시간상 선형입니다.
C++에서 std::벡터란 무엇입니까?
표준::벡터 C++에서는 벡터 컨테이너와 해당 멤버 함수를 포함하는 클래스 템플릿입니다. 내부에 정의되어 있습니다. 헤더 파일. std::Vector 클래스의 멤버 함수는 벡터 컨테이너에 다양한 기능을 제공합니다.
C++에서 벡터를 선언하는 구문
std::vector vectorName;>
여기서 데이터 유형은 벡터의 각 요소에 대한 데이터 유형입니다. std 네임스페이스를 이미 사용한 경우 std::를 제거할 수 있습니다.
C++에서 벡터 초기화
다음과 같은 방법으로 벡터를 초기화할 수 있습니다.
1. 목록을 사용한 초기화
이 초기화는 선언을 통해 수행됩니다. 여기서는 요소 목록을 벡터 생성자에 전달하여 지정된 요소가 포함된 벡터를 만듭니다.
vector name({ value1, value2, value3 .... });>
2. 초기화 단일 값 사용
이 초기화는 선언을 통해서도 수행됩니다. 여기서는 벡터의 크기를 지정한 다음 벡터의 모든 요소를 해당 값으로 초기화합니다.
vector name(size, value);>
삼. 다른 벡터에서 초기화
이 초기화는 other_vec의 정확한 복사본인 벡터를 만드는 데 사용됩니다.
vector name(other_vec);>
std::Vector 클래스의 일반적으로 사용되는 일부 멤버 함수는 다음과 같습니다.
반복자
- 시작하다() – 벡터의 첫 번째 요소를 가리키는 반복자를 반환합니다.
- 끝() – 벡터의 마지막 요소 뒤에 오는 이론적인 요소를 가리키는 반복자를 반환합니다.
- rbegin() – 벡터의 마지막 요소를 가리키는 역방향 반복자를 반환합니다(역방향 시작). 마지막 요소에서 첫 번째 요소로 이동합니다.
- 세우다() – 벡터의 첫 번째 요소 앞에 있는 이론적인 요소를 가리키는 역방향 반복자를 반환합니다(역방향 끝으로 간주).
- cbegin() – 벡터의 첫 번째 요소를 가리키는 상수 반복자를 반환합니다.
- 몇() – 벡터의 마지막 요소 뒤에 오는 이론적인 요소를 가리키는 상수 반복자를 반환합니다.
- 크르비긴() – 벡터의 마지막 요소(역방향 시작)를 가리키는 상수 역방향 반복자를 반환합니다. 마지막 요소에서 첫 번째 요소로 이동합니다.
- 신조() – 벡터의 첫 번째 요소 앞에 있는 이론적인 요소를 가리키는 상수 역방향 반복자를 반환합니다(역방향 끝으로 간주).
C++
// C++ program to illustrate the> // iterators in vector> #include> #include> > using> namespace> std;> > int> main()> {> > vector<> int> >g1;> > > for> (> int> i = 1; i <= 5; i++)> > g1.push_back(i);> > > cout <<> 'Output of begin and end: '> ;> > for> (> auto> i = g1.begin(); i != g1.end(); ++i)> > cout << *i <<> ' '> ;> > > cout <<> '
Output of cbegin and cend: '> ;> > for> (> auto> i = g1.cbegin(); i != g1.cend(); ++i)> > cout << *i <<> ' '> ;> > > cout <<> '
Output of rbegin and rend: '> ;> > for> (> auto> ir = g1.rbegin(); ir != g1.rend(); ++ir)> > cout << *ir <<> ' '> ;> > > cout <<> '
Output of crbegin and crend : '> ;> > for> (> auto> ir = g1.crbegin(); ir != g1.crend(); ++ir)> > cout << *ir <<> ' '> ;> > > return> 0;> }> |
>
>산출
Output of begin and end: 1 2 3 4 5 Output of cbegin and cend: 1 2 3 4 5 Output of rbegin and rend: 5 4 3 2 1 Output of crbegin and crend : 5 4 3 2 1>
용량
- 크기() – 벡터의 요소 수를 반환합니다.
- 최대_크기() – 벡터가 보유할 수 있는 최대 요소 수를 반환합니다.
- 용량() – 요소 개수로 표현된 벡터에 현재 할당된 저장 공간의 크기를 반환합니다.
- 크기 조정(n) – 'n'개의 요소가 포함되도록 컨테이너의 크기를 조정합니다.
- 비어 있는() – 컨테이너가 비어 있는지 여부를 반환합니다.
- Shrink_to_fit() – 용기의 용량을 크기에 맞게 줄이고, 용량을 초과하는 모든 구성품을 파기합니다.
- 예약하다() – 벡터 용량이 최소한 n개의 요소를 포함하기에 충분하도록 요청합니다.
C++
// C++ program to illustrate the> // capacity function in vector> #include> #include> > using> namespace> std;> > int> main()> {> > vector<> int> >g1;> > > for> (> int> i = 1; i <= 5; i++)> > g1.push_back(i);> > > cout <<> 'Size : '> << g1.size();> > cout <<> '
Capacity : '> << g1.capacity();> > cout <<> '
Max_Size : '> << g1.max_size();> > > // resizes the vector size to 4> > g1.resize(4);> > > // prints the vector size after resize()> > cout <<> '
Size : '> << g1.size();> > > // checks if the vector is empty or not> > if> (g1.empty() ==> false> )> > cout <<> '
Vector is not empty'> ;> > else> > cout <<> '
Vector is empty'> ;> > > // Shrinks the vector> > g1.shrink_to_fit();> > cout <<> '
Vector elements are: '> ;> > for> (> auto> it = g1.begin(); it != g1.end(); it++)> > cout << *it <<> ' '> ;> > > return> 0;> }> |
>
Java에서 csv 파일 읽기
>산출
Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>
요소 액세스
- 참조 연산자 [g] – 벡터의 'g' 위치에 있는 요소에 대한 참조를 반환합니다.
- 에서(g) – 벡터의 'g' 위치에 있는 요소에 대한 참조를 반환합니다.
- 앞쪽() – 벡터의 첫 번째 요소에 대한 참조를 반환합니다.
- 뒤쪽에() – 벡터의 마지막 요소에 대한 참조를 반환합니다.
- C++
// C++ program to illustrate the>
// element access in vector>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
vector<>
int>
>g1;>
>
>
for>
(>
int>
i = 1; i <= 10; i++)>
>
g1.push_back(i * 10);>
>
>
cout <<>
' Reference operator [g] : g1[2] = '>
<< g1[2];>
>
>
cout <<>
' at : g1.at(4) = '>
<< g1.at(4);>
>
>
cout <<>
' front() : g1.front() = '>
<< g1.front();>
>
>
cout <<>
' back() : g1.back() = '>
<< g1.back();>
>
>
// pointer to the first element>
>
int>
* pos = g1.data();>
>
>
cout <<>
' The first element is '>
<< *pos;>
>
return>
0;>
}>
>
>
산출Reference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>
수정자
- 양수인() – 이전 요소를 대체하여 벡터 요소에 새로운 값을 할당합니다.
- push_back() – 요소를 뒤에서 벡터로 밀어 넣습니다.
- 팝백() – 벡터의 요소를 뒤에서 꺼내거나 제거하는 데 사용됩니다.
- 끼워 넣다() – 지정된 위치의 요소 앞에 새 요소를 삽입합니다.
- 삭제() – 지정된 위치나 범위의 컨테이너에서 요소를 제거하는 데 사용됩니다.
- 교환() – 한 벡터의 내용을 동일한 유형의 다른 벡터로 바꾸는 데 사용됩니다. 크기는 다를 수 있습니다.
- 분명한() – 벡터 컨테이너의 모든 요소를 제거하는 데 사용됩니다.
- 자리() – 위치에 새 요소를 삽입하여 컨테이너를 확장합니다.
- emplace_back() – 벡터 컨테이너에 새 요소를 삽입하는 데 사용되며 새 요소는 벡터 끝에 추가됩니다.
C++
// C++ program to illustrate the>
// Modifiers in vector>
#include>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
// Assign vector>
>
vector<>
int>
>안에;>
>
>
// fill the vector with 10 five times>
>
v.assign(5, 10);>
>
>
cout <<>
'The vector elements are: '>
;>
>
for>
(>
int>
i = 0; i cout << v[i] << ' '; // inserts 15 to the last position v.push_back(15); int n = v.size(); cout << ' The last element is: ' << v[n - 1]; // removes last element v.pop_back(); // prints the vector cout << ' The vector elements are: '; for (int i = 0; i cout << v[i] << ' '; // inserts 5 at the beginning v.insert(v.begin(), 5); cout << ' The first element is: ' << v[0]; // removes the first element v.erase(v.begin()); cout << ' The first element is: ' << v[0]; // inserts at the beginning v.emplace(v.begin(), 5); cout << ' The first element is: ' << v[0]; // Inserts 20 at the end v.emplace_back(20); n = v.size(); cout << ' The last element is: ' << v[n - 1]; // erases the vector v.clear(); cout << ' Vector size after clear(): ' << v.size(); // two vector to perform swap vector
v1, v2; v1.push_back(1); v1.push_back(2); v2.push_back(3); v2.push_back(4); 시합<< ' Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; // Swaps v1 and v2 v1.swap(v2); cout << ' After Swap Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; }> >
>
산출The vector elements are: 10 10 10 10 10 The last element is: 15 The vector elements are: 10 10 10 10 10 The first element is: 5 The first element is: 10 The first element is: 5 The last element is: 20 Vector size after erase(): 0 Vector 1: 1 2 Vector 2: 3 4 After Swap Vector 1: 3 4 Vector 2: 1 2>
벡터에 대한 다양한 작업을 수행하는 데 소요되는 시간 복잡도는 다음과 같습니다.
- 랜덤 액세스 – 상수 O(1)
- 끝에 요소 삽입 또는 제거 - 상수 O(1)
- 요소 삽입 또는 제거 - 벡터 O(N)의 끝까지 거리가 선형입니다.
- 크기 알기 - 상수 O(1)
- 벡터 크기 조정 - 선형 O(N)
std::벡터의 모든 멤버 함수
다음은 C++에서 std::Vector 클래스의 모든 멤버 함수 목록입니다.
C# 샘플 코드
벡터 함수
설명
벡터의 끝에 요소를 추가합니다. 벡터의 마지막 요소를 제거합니다. 벡터의 요소 수를 반환합니다. 최대_크기()
벡터가 보유할 수 있는 최대 요소 수를 반환합니다. 크기 조정()
벡터의 크기를 변경합니다. 벡터가 비어 있는지 확인합니다. 운영자[]
알파벳과 숫자
특정 위치의 요소에 액세스합니다. 에()
경계 검사를 통해 특정 위치의 요소에 액세스합니다. 앞쪽()
벡터의 첫 번째 요소에 액세스합니다. 뒤쪽에()
벡터의 마지막 요소에 액세스합니다. 시작하다()
벡터의 첫 번째 요소를 가리키는 반복자를 반환합니다. 끝()
벡터의 끝을 지난 요소를 가리키는 반복자를 반환합니다. rbegin()
벡터의 마지막 요소를 가리키는 역방향 반복자를 반환합니다. 세우다()
벡터의 첫 번째 요소 이전 요소를 가리키는 역방향 반복기를 반환합니다. cbegin
const_iterator를 처음으로 반환합니다. 몇 가지
const_iterator를 끝까지 반환합니다. 크립긴
시작을 거꾸로 하려면 const_reverse_iterator를 반환합니다. 믿다
반대 끝으로 const_reverse_iterator를 반환합니다. 벡터의 특정 위치에 요소를 삽입합니다. 벡터의 특정 위치나 범위에서 요소를 제거합니다. 교환()
벡터의 내용을 다른 벡터의 내용으로 바꿉니다. 벡터에서 모든 요소를 제거합니다. 자리()
벡터에 요소를 생성하고 삽입합니다. emplace_back()
벡터 끝에 요소를 생성하고 삽입합니다. 양수인()
이전 값을 대체하여 벡터 요소에 새 값을 할당합니다. 용량()
현재 벡터에 할당된 저장 공간의 크기를 반환합니다. 예약하다()
벡터 용량이 최소한 지정된 수의 요소를 포함하기에 충분하도록 요청합니다. Shrink_to_fit()
사용하지 않는 공간을 확보하여 메모리 사용량을 줄입니다. get_allocator
벡터와 관련된 할당자 개체의 복사본을 반환합니다. 읽어야 할 내용:
- C++에서 벡터에 주어진 요소가 포함되어 있는지 확인하는 방법은 무엇입니까?
- C++의 벡터에서 특정 요소의 인덱스를 찾는 방법
- C++에서 벡터 정렬