Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- M1W
- Unity
- 코드잇TIL
- 추상적 자료형
- 스톡
- 시간복잡도
- 코테
- unityC#
- 자료구조
- 코딩공부
- solved.ac
- 자바스크립트
- 노트북SSD교체
- LinkedList
- JS
- 코드잇
- GMK67
- 어도비
- 브론즈
- 오늘도코드잇
- 몬스긱
- 기계식키보드
- ADT
- 삼성노트북
- 삼성노트북하판
- 코테준비
- JavaScript
- 긱바
- 백준
- 노트북램교체
Archives
- Today
- Total
SKYLIGHT STUDIO
[C++ 리바이브] 범위 기반 for 루프 본문
C++ 11부터 새롭게 도입된 루프. 기존의 for문보다 강화된 형태다.
기본 문법은 다음과 같다.
for (element_declaration : container) {
// 반복할 코드
}
element_declaration은 컨테이너에서 꺼낸 각 요소를 받는 변수 선언,
container은 배열이나 vector이나 map 등의 자료구조,
다음은 본격적인 예제이다.
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
map<string, int> score = {{"Alice", 90}, {"Bob", 85}, {"Charlie", 95}};
for(const auto& pair : score) {
cout << pair.first << ": " << pair.second << endl;
}
return 0;
}
앞서 말한대로 const auto*로 변수 선언, score은 map 자료구조.
여기서 first는 key이고 second는 value이다. 오해하지 말자.
const auto&에 대해서는 아래에서 더 추가적으로 설명한다.
for (const auto& pair : score)
1) const
반복문 안에서 요소를 수정할 수 없도록 만든다.
예를 들어 상기 코드 내에서 pair.first와 pair.second(각각 key와 value)가 수정할 수 없게 된다. 이 경우에는 안정성을 높이고 최적화하는 용도이다.
2) auto&
C++ 11에서 추가된 타입 추론 기능.
컴파일러가 반복문을 순회화며 각 요소의 타입을 자동으로 추론까지 하는 것.
map<string int>의 각 요소는 결국 pair<const string, int>인데, 이걸 명시적으로 적을 필요 없이 auto로 간단하게 처리하는 것이다.
&(참조자)로 요소를 받아야 불필요한 복사를 방지할 수 있다.
만약 참조(&) 없이 auto pair**로 사용하면, 매번 새로운 복사본이 만들어져 퍼포먼스에 악영향을 줄 수 있다. 특히 큰 객체가 저장된 컨테이너에서는 복사가 대단히 비율적이기 때문.
간단하게 얕은 복사를 하도록 구현한 것.
'Computer Programming > Coding Test(C++)' 카테고리의 다른 글
[C++ 리바이브] Map (2) | 2024.10.30 |
---|---|
[C++][1773] 폭죽쇼 (1) | 2024.10.08 |
[C++/1076] 저항 (0) | 2024.10.08 |
[C++][2547] 사탕 선생 고창영 (1) | 2024.10.02 |
[C++ 리바이브] C++ 동적 배열 (0) | 2024.10.02 |