C++의 역 배열
- ‘벡터’범위 기반 생성자를 사용하여 C++에서 배열 반전
-
std::reverse
함수를 사용하여 C++에서 배열 반전 -
rbegin
/rend
반복자를 사용하여 C++에서 배열 반전
이 기사에서는 C++에서 배열을 뒤집는 방법에 대한 몇 가지 방법을 설명합니다.
‘벡터’범위 기반 생성자를 사용하여 C++에서 배열 반전
vector
컨테이너는 반복기로 지정된 범위의 생성자를 지원합니다. 따라서 새로운vector
변수를 선언하고rbegin
/rend
반복자를 사용하여 첫 번째 벡터의 역값으로 초기화 할 수 있습니다.
클론을 깔끔하게 유지하고 단일 함수 호출에서 vector
내용을 출력하는 함수PrintVector
도 선언합니다. 이 방법의 한 가지 단점은 특정 시나리오에서 불필요한 오버 헤드가 될 수있는 새로운 배열 변수를 생성해야한다는 것입니다.
#include <iostream>
#include <iterator>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::vector;
void PrintVector(vector<int> &arr) {
copy(arr.begin(), arr.end(), ostream_iterator<int>(cout, "; "));
cout << endl;
}
int main() {
vector<int> arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
vector<int> arr1_reversed(arr1.rbegin(), arr1.rend());
PrintVector(arr1_reversed);
return EXIT_SUCCESS;
}
출력:
10; 9; 8; 7; 6; 5; 4; 3; 2; 1;
std::reverse
함수를 사용하여 C++에서 배열 반전
또는 다른 변수를 선언하지 않고 배열 요소를 뒤집으려면 표준 라이브러리에서std::reverse
함수를 호출 할 수 있습니다. std::reverse
는<algorithm>
헤더의 일부이며 C++ 17 이후 표준 라이브러리의 일부였습니다. 이 함수는 범위의 ‘시작/종료’반복자를 함수 인수로 사용하고 요소를 제자리에서 교체합니다. std::reverse
가 호출 된 벡터는 영구적으로 수정되며 그에 따른 요소 액세스는 새로운 순서를 생성합니다.
#include <iostream>
#include <iterator>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::reverse;
using std::vector;
void PrintVector(vector<int> &arr) {
copy(arr.begin(), arr.end(), ostream_iterator<int>(cout, "; "));
cout << endl;
}
int main() {
vector<int> arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
reverse(arr1.begin(), arr1.end());
PrintVector(arr1);
return EXIT_SUCCESS;
}
출력:
10; 9; 8; 7; 6; 5; 4; 3; 2; 1;
rbegin
/rend
반복자를 사용하여 C++에서 배열 반전
이 주제의 첫 번째 예와 달리vector
의 재정렬 된 내용을 프로그램 흐름에 저장할 필요가없고 콘솔이나 디스플레이로 출력 할 필요가없는 사용 사례가 있습니다. 다음 예제는 기본 변수 내용을 수정하지 않고 역순으로 콘솔에 배열 요소를 인쇄하는 방법을 보여줍니다.
#include <iostream>
#include <iterator>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::vector;
void PrintVector(vector<int> &arr) {
copy(arr.begin(), arr.end(), ostream_iterator<int>(cout, "; "));
cout << endl;
}
int main() {
vector<int> arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
copy(arr1.rbegin(), arr1.rend(), ostream_iterator<int>(cout, "; "));
cout << endl;
return EXIT_SUCCESS;
}
출력:
10; 9; 8; 7; 6; 5; 4; 3; 2; 1;
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