C++에서 배열 크기 조정

Jinku Hu 2023년10월12일
  1. resize 메서드를 사용하여 C++에서 배열 크기 조정
  2. erase 메서드를 사용하여 C++에서 배열의 요소 수 줄이기
  3. 사용자 정의 함수 사용 C++에서 배열 크기 조정
C++에서 배열 크기 조정

이 기사에서는 C++에서 배열의 크기를 조정하는 방법에 대한 여러 방법을 소개합니다.

resize 메서드를 사용하여 C++에서 배열 크기 조정

고정 길이 배열 컨테이너는 C++에서 크기를 조정하지 않아야하므로std::vector 클래스에 초점을 맞출 것입니다. resizevector 컨테이너의 내장 함수이며 벡터에 포함 된 요소의 수를 변경합니다. 이 함수는 첫 번째 인수 count가 현재 ‘벡터’크기보다 작은 경우 요소 수를 줄일 수 있습니다. 그렇지 않고count 인수가 벡터 크기보다 크면resize는 기본값이 0 인 추가 요소를 삽입하거나 사용자가 원하는 값을 함수의 두 번째 인수로 제공 할 수 있습니다.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};

  cout << "i_vec1             : ";
  printVectorElements(i_vec1);
  cout << "size: " << i_vec1.size() << endl;

  i_vec1.resize(i_vec1.size() - 2);

  cout << "i_vec1 (resized -2): ";
  printVectorElements(i_vec1);
  cout << "size: " << i_vec1.size() << endl;
  cout << endl;

  return EXIT_SUCCESS;
}

출력:

i_vec1             : 12; 32; 43; 53; 23; 65; 84;
size: 7
i_vec1 (resized -2): 12; 32; 43; 53; 23;
size: 5

erase 메서드를 사용하여 C++에서 배열의 요소 수 줄이기

erase 함수는std::vector 클래스의 또 다른 내장 메소드로vector에서 단일 요소를 제거하거나 해당 반복기로 지정된 전체 범위를 삭제할 수도 있습니다.

다음 예에서는 요소 2에서 끝까지 주어진 범위가 정수 ‘벡터’에서 제거됩니다. begin/end반복자를 사용하여 범위 매개 변수를 전달하는 것이 일반적입니다.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};

  cout << "i_vec1          : ";
  printVectorElements(i_vec1);
  cout << "size: " << i_vec1.size() << endl;

  i_vec1.erase(i_vec1.begin() + 2, i_vec1.end());

  cout << "i_vec1 (resized): ";
  printVectorElements(i_vec1);
  cout << "size: " << i_vec1.size() << endl;
  cout << endl;

  return EXIT_SUCCESS;
}

출력:

i_vec1          : 12; 32; 43; 53; 23; 65; 84;
size: 7
i_vec1 (resized): 12; 32;
size: 2

사용자 정의 함수 사용 C++에서 배열 크기 조정

또는 벡터를 반복하고 벡터 끝에서 주어진 수의 요소를 제거하는 별도의 함수를 정의 할 수 있습니다. 이것은vector의 마지막 요소를 제거하는pop_back 내장 함수를 사용하여 구현할 수 있습니다. 다음 코드 샘플과 같이resizeVector 함수 템플릿은T 유형의 벡터와 제거 할 여러 요소를 가져 오도록 정의됩니다.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

template <typename T>
void resizeVector(vector<T> &vec, int elems) {
  for (auto i = 0; i < elems; ++i) {
    vec.pop_back();
  }
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};

  cout << "i_vec1          : ";
  printVectorElements(i_vec1);
  cout << "size: " << i_vec1.size() << endl;

  resizeVector(i_vec1, 3);

  cout << "i_vec1 (resized): ";
  printVectorElements(i_vec1);
  cout << "size: " << i_vec1.size() << endl;
  cout << endl;

  return EXIT_SUCCESS;
}

출력:

i_vec1          : 12; 32; 43; 53; 23; 65; 84;
size: 7
i_vec1 (resized): 12; 32; 43; 53;
size: 4
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ Array