C++에서 배열을 반복하는 방법
이 기사에서는 C++에서 다른 방법을 사용하여 배열을 반복하는 방법을 설명합니다.
for
루프를 사용하여 배열 반복
배열 요소를 반복하는 명백한 방법은 for
루프입니다. 이는 각각 쉼표로 구분 된 세 부분으로 된 문으로 구성됩니다. 먼저 설계 상 한 번만 실행되는 카운터 변수 i
를 초기화해야합니다. 다음 부분은 각 반복에서 평가 될 조건을 선언하고 false가 반환되면 루프 실행이 중지됩니다. 이 경우 카운터와 배열의 크기를 비교합니다. 마지막 부분은 카운터를 증가시키고 각 루프 사이클에서도 실행됩니다.
#include <array>
#include <iostream>
using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
array<string, 10> str_arr = {"Albatross", "Auklet", "Bluebird", "Blackbird",
"Cowbird", "Dove", "Duck", "Godwit",
"Gull", "Hawk"};
for (size_t i = 0; i < str_arr.size(); ++i) {
cout << str_arr[i] << " - ";
}
cout << endl;
return EXIT_SUCCESS;
}
출력:
Albatross - Auklet - Bluebird - Blackbird - Cowbird - Dove - Duck - Godwit - Gull - Hawk -
범위 기반 루프를 사용하여 배열 반복
범위 기반 루프는 기존의 for
루프를 읽을 수있는 버전입니다. 이 방법은 복잡한 컨테이너에 대한 쉬운 반복을 제공하고 각 요소에 액세스 할 수있는 유연성을 유지하므로 강력한 대안입니다. 다음 코드 샘플은 이전 예제를 정확하게 다시 구현 한 것입니다.
#include <array>
#include <iostream>
using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
array<string, 10> str_arr = {"Albatross", "Auklet", "Bluebird", "Blackbird",
"Cowbird", "Dove", "Duck", "Godwit",
"Gull", "Hawk"};
for (auto &item : str_arr) {
cout << item << " - ";
}
cout << endl;
return EXIT_SUCCESS;
}
std::for_each
알고리즘을 사용하여 배열 반복
for_each
는 범위 요소에서 작동하고 사용자 정의 함수를 적용하는 강력한 STL 알고리즘입니다. 범위 시작 및 마지막 반복기 객체를 처음 두 매개 변수로 사용하고 함수 객체를 세 번째 매개 변수로 사용합니다. 이 경우 계산 된 결과를 콘솔에 직접 출력하는 lambda
표현식으로 함수 객체를 선언합니다. 마지막으로custom_func
변수를for_each
메소드에 대한 인수로 전달하여 배열 요소에서 작동 할 수 있습니다.
#include <array>
#include <iostream>
using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::string;
int main() {
array<int, 10> int_arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto custom_func = [](auto &i) { cout << i * (i + i) << "; "; };
;
for_each(int_arr.begin(), int_arr.end(), custom_func);
cout << endl;
return EXIT_SUCCESS;
}
출력:
2; 8; 18; 32; 50; 72; 98; 128; 162; 200;
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