C++ - vector

2022. 8. 6. 22:34STUDY/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