boost tuple

Posted sssblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了boost tuple相关的知识,希望对你有一定的参考价值。

boost::tuple is a generalized version of std::pair. While std::pair can only store exactly two values, boost::tuple lets you choose how many values to store.

1. boost::tuple replacing std::pair

#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
#include <iostream>
#include <string>

int main() 
  typedef boost::tuple<std::string, int> animal;
typedef boost::tuple<std::string, int, bool> animal2; animal a(
"cat", 4);
animal2 b("cat", 4, true); std::cout
<< a << std::endl;
std::cout << std::boolalpha << b << std::endl;
return 0;

输出为:

(cat 4)

(cat, 4, true)

2. creating tuples with boost::make_tuple()

#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
#include <iostream>

int main() 
  std::cout.setf(std::ios::boolalpha);
  std::cout << boost::make_tuple("cat", 4, true) << std::endl;
  return 0;

boost::make_tuple() works like the helper function std::make_pair() for std::pair

3. reading and writing elements of a tuple

#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
#include <string>
#include <iostream>

int main() 
  typedef boost::tuple<std::string, int, bool> animal;
  animal a = boost::make_tuple("cat", 4, true);
  std::cout << a.get<0>() << std::endl;
  std::cout << boost::get<0>(a) << std::endl;
  a.get<0>() = "dog";
  std::cout << std::boolalpha << a << std::endl;
  return 0;

输出为:

cat

cat

(dog 4 true)

There are two ways to access values in a tuple. You can call the member function get(), or you can pass the tuple to the free-standing function boost::get(). In both cases, the index of the corrsponding element in the tuple must be provided as a template parameter. The member function get() and the free-standing function boost::get() both return a reference that allows you to change a value inside a tuple.

4. creating a tier with boost::tie()

Boost.Tuple supports a specific form of tuples called tier. Tiers are tuples whose elements are all reference types. They can be constructed with the function boost::tie()

#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
#include <string>
#include <iostream>

int main() 
  typedef boost::tuple<std::string&, int&, bool&> animal;
  std::string name = "cat";
  int legs = 4;
  bool tail = true;
  animal a = boost::tie(name, legs, tail);
  name = "dog";
  std::cout << std::boolalpha << a << std::endl;

  animal b = boost::make_tuple(boost::ref(name), boost::ref(legs), boost::ref(tail));
  name = "animal";
  std::cout << std::boolalpha << b << std::endl;
  return 0;

输出为:

(dog 4 true)

(animal 4 true)

以上是关于boost tuple的主要内容,如果未能解决你的问题,请参考以下文章

Boost 和 Boost.Build 的设置

阿迪bounce和boost哪个走路舒服 bounce和boost对比

如何移植boost库到Android

大家怎么处理QT库和stl,boost等的关系

boost--BOOST_AUTOtypeofresult_of

windows 怎么安装boost