맵 생성하기
Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨. 56개 중 24번째.
이제 map이 무엇인지 이해했으니, map을 생성하고 키-값 쌍을 추가하는 방법을 배워 봅시다. std::map을 선언할 때 꺾쇠괄호를 사용하여 키의 형식과 값의 형식을 모두 지정해야 합니다.
다음은 map을 생성하는 기본 구문입니다:
std::map<KeyType, ValueType> mapName;예를 들어, 학생 이름을 키로 저장하고 시험 점수를 값으로 저장하는 map을 만들려면:
std::map<std::string, int> studentScores;map에 요소를 추가하려면 키와 함께 대괄호 표기법을 사용한 다음 값을 할당할 수 있습니다:
studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;이렇게 하면 map에 세 개의 키-값 쌍이 생성됩니다. 각 student의 이름이 키 역할을 하므로 해당 score를 빠르게 검색할 수 있습니다.
맵의 모든 요소를 순회하려면 범위 기반 for 루프와 auto를 사용할 수 있습니다. std::map의 각 요소는 키-값 쌍이며, .first를 사용하여 키에 액세스하고 .second를 사용하여 값에 액세스할 수 있습니다:
for (const auto& pair : studentScores) {
std::cout << pair.first << ": " << pair.second << std::endl;
}여기서 auto는 각 요소(키-값 쌍)의 형식을 자동으로 추론하고, pair.first는 키(학생의 이름)를 제공하며, pair.second는 값(점수)을 제공합니다. std::map은 키를 기준으로 요소를 자동으로 정렬된 상태로 유지하므로, map을 순회하면 항목이 알파벳순으로 출력된다는 점에 유의하세요.
챌린지
쉬움std::map을 사용하여 학생 성적 추적 시스템을 구축하는 프로그램을 작성하세요. 프로그램은 학생 이름을 키로, 시험 점수를 값으로 저장해야 합니다.
다음 입력이 제공됩니다:
- 학생 수를 나타내는 정수
n - 그다음
n개의 입력 쌍:- 학생의 이름을 나타내는 문자열
- 학생의 점수를 나타내는 정수
프로그램은 다음을 수행해야 합니다:
grades라는 이름의std::map<std::string, int>을 생성합니다.- 학생 수를 읽습니다.
- 각 학생에 대해 이름과 점수를 읽은 다음 대괄호 표기법을 사용하여 map에 추가합니다.
- 모든 학생을 추가한 후 아래에 표시된 형식으로 각 학생의 정보를 출력합니다.
- map에 저장된 전체 학생 수를 계산하고 출력합니다.
다음의 정확한 출력 형식을 사용하세요:
Student Grades:\n[student1]: [score1]\n[student2]: [score2]\n[student3]: [score3]\n...\nTotal students: [number of students]학생은 map을 순회할 때 나타나는 순서대로 출력되어야 합니다(map은 키를 기준으로 자동 정렬하므로 알파벳순입니다). 범위 기반 for 루프를 사용하여 map을 순회하고, 각 키-값 쌍에 접근하여 학생 이름을 점수 뒤에 출력하세요.
직접 해보기
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
// 학생 수를 읽습니다
int n;
cin >> n;
// 성적을 저장할 map을 생성합니다
map<string, int> grades;
// TODO: 여기에 코드를 작성하세요
// 각 학생의 이름과 점수를 읽은 다음 map에 추가합니다
// 결과를 출력합니다
cout << "Student Grades:" << endl;
// TODO: 범위 기반 for 루프를 사용하여 각 학생의 성적을 출력하세요
// 총 학생 수를 출력합니다
cout << "Total students: " << grades.size() << endl;
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직과 흐름의 모든 레슨
직접 연습해 보세요: 온라인 C++ 컴파일러