c++ boost라이브러리의 variant의 원리에 대해 궁금합니다.


안녕하세요. c++을 공부하고 있는 학생입니다.

제가 하는 프로젝트에서 boost에 있는 variant와 유사한 기능을 가진 클래스가 필요하게 되었습니다.

하지만 boost를 추가하기에는 비용이 너무 커서 허접하지만 직접 구현하려고 했습니다.

그래서 boost variant.hpp를 열어서 보았지만 도저히 이해가 안되서 이렇게 질문글 올립니다.

variant의 원리가 궁금하고 variant를 구현하는데 있어서 가장 중요한 c++문법이 뭔지 궁금합니다!

  • 2016년 04월 18일에 작성됨

조회수 207


1 답변


좋아요
1
싫어요
채택취소하기

C++11 이상을 사용하실 수 있으시면 tuple 을 사용하시면 됩니다.

http://www.cplusplus.com/reference/tuple/tuple/

// http://www.cplusplus.com/reference/tuple/tuple/
// tuple example
#include <iostream>     // std::cout
#include <tuple>        // std::tuple, std::get, std::tie, std::ignore

int main ()
{
  std::tuple<int,char> foo (10,'x');
  auto bar = std::make_tuple ("test", 3.1, 14, 'y');

  std::get<2>(bar) = 100;                                    // access element

  int myint; char mychar;

  std::tie (myint, mychar) = foo;                            // unpack elements
  std::tie (std::ignore, std::ignore, myint, mychar) = bar;  // unpack (with ignore)

  mychar = std::get<3>(bar);

  std::get<0>(foo) = std::get<2>(bar);
  std::get<1>(foo) = mychar;

  std::cout << "foo contains: ";
  std::cout << std::get<0>(foo) << ' ';
  std::cout << std::get<1>(foo) << '\n';

  return 0;
}
  • 2016년 04월 18일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close