[C++ STL] std::tuple

2024. 6. 30. 19:17·Programming Language(Sub)/C++

std::tuple이란?

  • 기존에 다른 데이터 타입의 값 2개를 저장하기 위해 pair를 사용했지만, first와 second 두 개의 요소만 관리할 수 있었다.
  • C++11부터 STL에서 tuple을 제공하여 다수의 요소를 관리할 수 있는 tuple을 제공한다.
  • <tuple>에 정의되어 있다.

 

기본 사용법

#include <tuple>
#include <iostream>

int main() {
    // 다양한 타입의 요소들을 포함하는 튜플 생성
    std::tuple<int, double, std::string> myTuple(1, 3.14, "Hello");

    // 튜플의 요소에 접근
    std::cout << "Integer: " << std::get<0>(myTuple) << std::endl;
    std::cout << "Double: " << std::get<1>(myTuple) << std::endl;
    std::cout << "String: " << std::get<2>(myTuple) << std::endl;

    return 0;
}

 

별 특이한 점은 없지만, std::get을 사용할 수 있다.

 

std::get

std::get 템플릿 함수를 이용해서 튜플의 요소에 접근할 수 있다(인덱스를 통해 접근)

std::get<0>(myTuple);  // 첫 번째 요소
std::get<1>(myTuple);  // 두 번째 요소
std::get<2>(myTuple);  // 세 번째 요소

 

std::make_tuple

주어진 값들로 초기화된 튜플을 리턴

auto t3 = std::make_tuple(2, 2.71, "World");

 

std::tie

기존 변수들을 튜플의 요소에 바인딩해준다

int a;
double b;
std::string c;

std::tie(a, b, c) = t3;

 

std::tuple_cat()

두 개의 tuple을 합친다

auto t1{std::make_tuple(10, "Name", 'a')};
auto t2{std::make_tuple("Hello", 20, 'b')};

auto t3{std::tuple_cat(t1, t2)};   
EXPECT_TRUE(
    std::get<0>(t3) == 10 && 
    std::get<1>(t3) == "Name" && 
    std::get<2>(t3) == 'a' &&
    std::get<3>(t3) == "Hello" && 
    std::get<4>(t3) == 20 && 
    std::get<5>(t3) == 'b'
);

 

 

'Programming Language(Sub) > C++' 카테고리의 다른 글

[C++] std::distance, std::advance  (0) 2024.07.01
[Modern C++] std::move, std::forward  (0) 2024.06.30
[C++ STL] std::string  (0) 2024.06.30
[C++ STL] std::pair  (0) 2024.06.30
[C++] 클래스와 함수의 friend 선언  (0) 2024.06.29
'Programming Language(Sub)/C++' 카테고리의 다른 글
  • [C++] std::distance, std::advance
  • [Modern C++] std::move, std::forward
  • [C++ STL] std::string
  • [C++ STL] std::pair
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기 (457)
      • Software Development (27)
        • Performance (0)
        • TroubleShooting (1)
        • Refactoring (0)
        • Test (8)
        • Code Style, Convetion (0)
        • DDD (0)
        • Software Engineering (18)
      • Java (71)
        • Basic (5)
        • Core (21)
        • Collection (7)
        • 멀티스레드&동시성 (13)
        • IO, Network (8)
        • Reflection, Annotation (3)
        • Modern Java(8~) (12)
        • JVM (2)
      • Spring (53)
        • Framework (12)
        • MVC (23)
        • Transaction (3)
        • AOP (11)
        • Boot (0)
        • AI (0)
      • DB Access (1)
        • Jdbc (1)
        • JdbcTemplate (0)
        • JPA (14)
        • Spring Data JPA (0)
        • QueryDSL (0)
      • Computer Science (130)
        • Data Structure (27)
        • OS (14)
        • Database (10)
        • Network (21)
        • 컴퓨터구조 (6)
        • 시스템 프로그래밍 (23)
        • Algorithm (29)
      • HTTP (8)
      • Infra (1)
        • Docker (1)
      • 프로그래밍언어론 (15)
      • Programming Language(Sub) (77)
        • Kotlin (1)
        • Python (25)
        • C++ (51)
        • JavaScript (0)
      • FE (11)
        • HTML (1)
        • CSS (9)
        • React (0)
        • Application (1)
      • Unix_Linux (0)
        • Common (0)
      • PS (13)
        • BOJ (7)
        • Tip (3)
        • 프로그래머스 (0)
        • CodeForce (0)
      • Book Review (4)
        • Clean Code (4)
      • Math (3)
        • Linear Algebra (3)
      • AI (7)
        • DL (0)
        • ML (0)
        • DA (0)
        • Concepts (7)
      • 프리코스 (4)
      • Project Review (6)
      • LegacyPosts (11)
      • 모니터 (0)
      • Diary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
lumana
[C++ STL] std::tuple
상단으로

티스토리툴바