오븐 노트

[C++] auto 본문

Develop/C++

[C++] auto

오 븐 2023. 10. 3. 22:47
#include <iostream>
using namespace std;
#include <vector>
#include <list>
#include <deque>
#include <map>
#include <set>
#include <algorithm>

class Knight
{
public:
	int _hp;
};

template<typename T>
void Print(T t)
{
	cout << t << endl;
}

int main()
{
	// Modern C++ (C++11 ~ )
	
	/*
	int a = 3;
	float b = 3.14f;
	double c = 1.23;
	Knight d = Knight();
	const char* e = "rookiss";
	*/

	auto a = 3;
	auto b = 3.14f;
	auto c = 1.23;
	auto d = Knight();
	auto e = "rookiss";

	// auto는 일종의 조커카드
	// 형식 연역 (type deduction)
	// 알아서 추론하여 맞추어라
	// 추론 규칙은 생각보다 복잡해질 수 있음

	// 주의점
	// 기본 auto는 const, &(참조)를 무시함
	int& reference = a;
	const int cst = a;
	auto test1 = reference;
	auto test2 = cst;

	vector<int> v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);

	for (vector<int>::size_type i = 0; i < v.size(); i++)
	{
		// int& data = v[i]; // 기본형
		// auto data = v[i]; // 참조를 무시하므로 의미없어짐
		auto& data = v[i]; // 참조를 강제해줘야 함
		data = 100;
	}

	// auto로 전부 변경하면 가독성이 너무 떨어지니 일반적으로는 놔두는게 좋다

	// auto를 주로 사용하는 경우
	map<int, int> m;
	auto ok = m.insert(make_pair(1, 100)); // 타이핑이 너무 길어지는 경우

	for (auto it = v.begin(); it != v.end(); ++it) // 대중적으로 많이 사용하는 경우
	{
		cout << *it << endl;
	}

	return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] nullptr  (0) 2023.12.07
[C++] 중괄호 초기화 { }  (0) 2023.10.16
[C++] algorithm  (0) 2023.09.30
[C++] 연습 문제  (0) 2023.08.31
[C++] set, multimap, multiset  (0) 2023.08.23