C++ - vector
2022. 8. 6. 22:34ㆍSTUDY/C++
반응형
C++ 에서는 , 정적배열 선언시 배열의 크기를 정해야하는 단점을 보완한 것이라고한다. 애초에 동적배열 .
vector는 push_back() , pop_back() 로 삽입과 삭제가 이루어진다.
vector 배열의 size는 vec.size() 로 정의된다.
vector 자료형은 값이 추가가 될 때마다 공간을 늘려가며 할당을 하므로, 더 큰 여유공간을 할당해둔다. 이걸 vec.capacity()라고 한다.
우선 자주 쓰이는 함수를 정리해보자.
- 임의의 위치 원소 접근 : vec.at[i] (시간복잡도 : O(1))
- 원소 추가 및 제거 : push_back(i) / pop_back(i) (시간복잡도 : O(1))
- 임의의 위치 원소 추가 및 제거 : insert(vec.begin() + 2, 15), erase(vec.begin() + 3) (시간복잡도 : O(n))
- 거꾸로 출력하는 함수 : reverse(vec.begin(), vec.end()) // 또는 vec.rbegin(), vec.rend() 를 사용한다.
- vector<int> arr(10, 1) : int 자료형 vector 를 10만큼 할당. 1은 초기값 설정. 그러면 {1,1,1,1,1,1,1,1,1,1} 겠죵?
- vector<int> arr{1,1,1,1,1,1,1,1,1...} 요런 식으로도 됨!
- 값이 들어가있는 벡터(v1)를 새 벡터(v2)에 복사해 넣으려면? -> vector<int> v1{ 1,2,3 }; vector<int> v2(v1);
우선 자주 쓰이는 함수를 소스코드로 ARABOZA.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> vec;
int N;
cin >> N;
for(int i = 0; i < N; i++) {
int tmp;
cin >> tmp;
vec.push_back(tmp);
}
for(int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
}
cout << '\n';
cout << vec.front() << " " << vec.back() << '\n';
reverse(vec.begin(), vec.end());
cout << vec.front() << " " << vec.back() << '\n';
sort(vec.begin(), vec.end());
cout << vec.front() << " " << vec.back() << '\n';
return 0;
}
728x90
반응형
'STUDY > C++' 카테고리의 다른 글
c++ - stack/queue (0) | 2022.08.07 |
---|---|
C++ - list (0) | 2022.08.06 |
vector & array (2) | 2022.08.04 |
C++ 입출력 속도 줄이기 ! (2) | 2022.08.03 |
C++ 빠르게 익히기. (0) | 2022.08.03 |