상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C++에서 std::variant의 사용법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
`std::variant`는 C++17에서 도입된 타입 안전한 유니온 타입으로, 여러 가지 타입 중 하나를 저장할 수 있는 데이터 구조입니다. `std::variant`는 C++의 표준 라이브러리에서 제공되며, 다양한 타입을 안전하게 다룰 수 있도록 도와줍니다. 이 글에서는 `std::variant`의 기본 사용법, 주요 기능, 그리고 예제를 통해 설명하겠습니다. 기본 사용법 `std::variant`는 다음과 같이 선언할 수 있습니다: ```cpp include <variant> include <iostream> include <string> std::variant<int, float, std::string> myVariant; ``` 위의 예제에서 `myVariant`는 `int`, `float`, 또는 `std::string` 중 하나의 타입을 가질 수 있습니다. 값 설정 `std::variant`에 값을 설정할 때는 `std::get` 또는 `std::visit`를 사용할 수 있습니다. 값을 설정하는 방법은 다음과 같습니다: ```cpp myVariant = 42; // int myVariant = 3.14f; // float myVariant = "Hello, World!"; // std::string ``` 값 가져오기 `std::variant`에 저장된 값을 가져오려면 `std::get`을 사용할 수 있습니다. 하지만, 잘못된 타입을 요청할 경우 예외가 발생하므로 주의해야 합니다. ```cpp try { std::cout << std::get<int>(myVariant) << std::endl; // int 타입일 경우 } catch (const std::bad_variant_access& e) { std::cout << "Error: " << e.what() << std::endl; } ``` 타입 확인 현재 저장된 타입을 확인하려면 `std::holds_alternative`를 사용할 수 있습니다: ```cpp if (std::holds_alternative<int>(myVariant)) { std::cout << "myVariant holds an int." << std::endl; } ``` 방문자 패턴 `std::visit`를 사용하면 `std::variant`에 저장된 타입에 따라 다른 동작을 수행할 수 있습니다. 이를 통해 다양한 타입에 대한 처리를 간편하게 할 수 있습니다. ```cpp std::visit([](auto&& arg) { std::cout << "Value: " << arg << std::endl; }, myVariant); ``` 예제 아래는 `std::variant`의 사용법을 보여주는 간단한 예제입니다: ```cpp include <iostream> include <variant> include <string> int main() { std::variant<int, float, std::string> myVariant; // 다양한 타입의 값 설정 myVariant = 10; std::cout << "Integer: " << std::get<int>(myVariant) << std::endl; myVariant = 3.14f; std::cout << "Float: " << std::get<float>(myVariant) << std::endl; myVariant = "Hello, Variant!"; std::cout << "String: " << std::get<std::string>(myVariant) << std::endl; // 타입 확인 if (std::holds_alternative<std::string>(myVariant)) { std::cout << "Currently holds a string." << std::endl; } // 방문자 패턴 사용 std::visit([](auto&& arg) { std::cout << "Visiting: " << arg << std::endl; }, myVariant); return 0; } ``` 결론 `std::variant`는 여러 타입을 안전하게 다룰 수 있는 강력한 도구입니다. <a href='https://sangseek.com/sangseeks/타입 안전성/ko'>타입 안전성</a>을 제공하며, 다양한 타입에 대한 처리를 간편하게 할 수 있도록 도와줍니다. C++17 이상을 사용하는 경우, `std::variant`를 활용하여 코드의 가독성과 안전성을 높일 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기