[C++] vector

2024. 9. 28. 18:05🧑🏻‍💻/C & C++

 c++17을 기준으로 사용합니다.

아래 레퍼런스를 참고하였습니다.

 

C++17 - cppreference.com

The following features were merged into C++17: From the File System TS: the filesystem library. From the Library fundamentals v1 TS: features, including std::any, std::optional, std::string_view, std::apply, polymorphic allocators, searchers. From Library

en.cppreference.com

 

C++ Clang++ 10.0 (C++17) clang++ -std=c++17 -O2 -Wno-unused-result -o FILENAME

  1. 선언 및 초기화
  2. 요소 삽입
  3. 요소 삭제
  4. 사이즈 변경
  5. 가장 큰 수
    1. 가장 큰 수의 인덱스
  6. 가장 작은 수
    1. 가장 작은 수의 인덱스
  7. reverse
  8. sort(asc, desc)
#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int output(vector<int> &v, string str) {
  cout << str << "\n";
  for (int i : v) cout << i << " ";
  cout << "\n==============================\n";
}

int main() {
  vector<int> v(5, 5);
  vector<int> v2 = {42, 55, 77};
  // vector 선언 및 초기화

  v.swap(v2);
  // v와 v2의 원소와 capacity 전부 swap
  auto pos = v.begin();
  pos = v.insert(pos, 1, 3);
  // 1번째 위치에 3의 값을 삽입. 리턴값으로 삽입한 곳의 iterator 반환. O(n)

  output(v, "현재 vector : ");

  v.erase(pos);
  // iter가 가리키는 원소를 제거. 1번째 위치에 3의 값을 삭제.

  v.push_back(1);
  v.push_back(5);
  v.push_back(7);
  // 요소 맨끝에 삽입

  v.resize(8);
  v[6] = 33;
  v[7] = 22;
  // vector 사이즈 변경

  output(v, "현재 vector : ");

  cout << "원소의 수 : " << v.size() << "\n";
  cout << "할당 공간 크기 : " << v.capacity() << "\n";

  cout << "맨 앞 수 : " << v.front() << "\n";
  v.pop_back();  // 마지막 원소 제거
  cout << "맨 뒷 수 : " << v.back() << "\n";

  int max = *max_element(v.begin(), v.end());
  cout << "가장 큰 수 : " << max << "\n";

  int max_index = max_element(v.begin(), v.end()) - v.begin();
  cout << "가장 큰 수의 인덱스 : " << max_index;
  cout << "\n==============================\n";

  int min = *min_element(v.begin(), v.end());
  cout << "가장 작은 수 : " << min << "\n";

  int min_index = min_element(v.begin(), v.end()) - v.begin();
  cout << "가장 작은 수의 인덱스 : " << min_index;

  cout << "\n================================\n";

  reverse(v.begin(), v.begin() + 4);
  output(v, "1 ~ 4번 째 원소에 대해서만 reverse");

  reverse(v.begin(), v.end());
  output(v, "전체 reverse");

  sort(v.begin(), v.end(), greater<int>());
  output(v, "DESC 내림차순");

  sort(v.begin(), v.end());
  output(v, "ASC 오름차순");

  sort(v.rbegin(), v.rend());
  output(v, "DESC 간단 내림차순");

  return 0;
}

'🧑🏻‍💻 > C & C++' 카테고리의 다른 글

[C++] map / multimap / unordered_map / unordered_multimap  (0) 2024.11.22
[C++] 순열, 조합  (0) 2024.10.05
[C++] Permutation, Combination  (0) 2024.08.10
[C] const  (0) 2022.09.15
[C] strjoin / strjoin.c / strjoin in c  (0) 2022.09.14