C++의 범위 기반 for 루프
이 기사에서는 C++에서 범위 기반for
루프를 사용하는 방법에 대한 여러 방법을 보여줍니다.
범위 기반for
루프를 사용하여 C++에서std::map
의 요소 인쇄
범위 기반for
루프는 일반for
루프와 동일합니다. begin
및end
멤버 함수가있는 배열 또는 기타 오브젝트를 탐색하는 데 사용할 수 있습니다. auto
키워드와 요소에 대한 참조를 사용하여 액세스합니다. 이 경우item
은std::map
유형의std::map
의 단일 요소를 참조합니다. 따라서 키-값 쌍에 액세스하려면first
/second
키워드를 사용하여 액세스하려면 특수한 점 표기법이 필요합니다.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
map<int, string> fruit_map = {{
1,
"Apple",
},
{
2,
"Banana",
},
{
3,
"Mango",
},
{
4,
"Cocoa",
}};
for (auto &item : fruit_map) {
cout << "[" << item.first << "," << item.second << "]\n";
}
return EXIT_SUCCESS;
}
출력:
[1,Apple]
[2,Banana]
[3,Mango]
[4,Cocoa]
또는 범위 기반 루프는 구조화 된 바인딩 표기법을 사용하여 요소에 액세스하고 코드 블록을 더 간결하게 만들 수 있습니다. 다음 예에서는std::map
쌍에 액세스하기위한 이러한 바인딩 사용법을 보여줍니다.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
map<int, string> fruit_map = {{
1,
"Apple",
},
{
2,
"Banana",
},
{
3,
"Mango",
},
{
4,
"Cocoa",
}};
for (const auto& [key, val] : fruit_map) {
cout << "[" << key << "," << val << "]\n";
}
return EXIT_SUCCESS;
}
출력:
[1,Apple]
[2,Banana]
[3,Mango]
[4,Cocoa]
범위 기반for
루프를 사용하여 C++에서struct
의 멤버 인쇄
구조적 바인딩은 순회 된 요소가 여러 데이터 멤버가있는 비교적 큰 구조를 나타낼 때 매우 유용 할 수 있습니다. 다음 예제 코드에서 볼 수 있듯이 이러한 멤버는 식별자 목록으로 선언 된 다음struct.member
표기법없이 직접 참조됩니다. 대부분의 STL 컨테이너는 범위 기반for
루프를 사용하여 순회 할 수 있습니다.
#include <iostream>
#include <list>
using std::cin;
using std::cout;
using std::endl;
using std::list;
using std::string;
struct Person {
string name;
string surname;
int age;
};
int main() {
list<Person> persons = {{"T", "M", 11},
{"R", "S", 23},
{"J", "R", 43},
{"A", "C", 60},
{"D", "C", 97}};
for (const auto& [n, s, age] : persons) {
cout << n << "." << s << " - " << age << " years old" << endl;
}
return EXIT_SUCCESS;
}
출력:
T.M - 11 years old
R.S - 23 years old
J.R - 43 years old
A.C - 60 years old
D.C - 97 years old
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