C++ std::tuple

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huatian5/article/details/85048065

std::tuple

是一个可以支持参数集的类模板

  • std::make_tuple 创建一个 tuple
  • std::tie 创建一个左值引用的 tuple
  • std::get 获取参数集合某个位置的参数
  • tuple_size 获取参数集数目
    示例:

#include <iostream>
#include <vector>
#include <tuple>
#include <string>

constexpr int N = 10;

template<class T>
void Print(T t) {
	std::cout << std::tuple_size<T>::value << "\n";
}
int main(){
	using TP = std::tuple<bool, int , float>;
	std::vector<TP> v;
	v.reserve(N);
	for (int i = 0; i < N; ++i)
		v.push_back(TP{false , 1 , 6.66});
	for (int i = 0; i < N; ++i)
		v.push_back(std::make_tuple(true, 1, 6.66));
	for (auto x : v) {
		std::cout << std::get<0>(x) << " " << std::get<1>(x) << " " << std::get<2>(x) << "\n";

	}
	int n = 5;
	std::string s = "sss";
	auto tp = std::tuple_cat(v[0], std::tie(n , s));
	std::cout << std::get<0>(tp) << " " << std::get<1>(tp) << " " << 
		std::get<2>(tp) << " " << std::get<3>(tp) << " " << std::get<4>(tp) << " " << "\n";
	Print(tp);
  return 0;
}

猜你喜欢

转载自blog.csdn.net/huatian5/article/details/85048065