C++ 标准库读书杂记6 Tuple

本文详细介绍了C++中元组(tuple)的概念及其使用方法,包括元组的创建、访问元素的方式、元组的大小计算及元组间的比较等。同时,文章还展示了如何利用std::make_tuple和std::tie等函数进行元组的操作。

Tuple

A tuple is an object capable to hold a collection of elements. Each element can be of a different type.

template <class... Types> class tuple;

找到一个tuple模板:


template<typename Head, typename... Tail>
class Tuple<Head, Tail...>
	:private Tuple<Tail...>	// 私有继承自Tuple<Tail...>
{
	using inherited = Tuple<Tail...>; //定义inherited 为 基类类型
public:
	Tuple(){}  
	Tuple(Head v, Tail... vtail) // 将第一个元素 赋值给m_head, 其余传给基类
		:m_head(v), inherited(vtail...)
	{}
 
	Head head() { return m_head; }  // 返回元组的第一个元素
	inherited& tail() { return *this; } // 返回该元组的基类引用
protected:
	Head m_head;

记住在调用Tuple模板时,后面依次为父类。其他的细节不懂。哈哈哈哈 你打我啊。

Tuple 操作:

std::get<>()

auto mytuple = std::make_tuple (10,'a');

  std::tuple_element<0,decltype(mytuple)>::type first = std::get<0>(mytuple);
  std::tuple_element<1,decltype(mytuple)>::type second = std::get<1>(mytuple);

std::make_tuple

template<class... Types>
  tuple<VTypes...> make_tuple (Types&&... args);
    
    auto first = std::make_tuple (10,'a');                // tuple < int, char >

    const int a = 0; int b[3];                         // decayed types:
    auto second = std::make_tuple (a,b);               // tuple < int, int* >
    auto third = std::make_tuple (std::ref(a),"abc");  // tuple < const int&, const char* >

std::tie(...) //建立一个由引用构成的tuple,并允许由此tuple提取个别数值。对应获取tuple里的值

int main ()
{
  int myint;
  char mychar;

  std::tuple<int,float,char> mytuple;

  mytuple = std::make_tuple (10, 2.6, 'a');          // packing values into tuple

  std::tie (myint, std::ignore, mychar) = mytuple;   // unpacking tuple into variables

  std::cout << "myint contains: " << myint << '\n';
  std::cout << "mychar contains: " << mychar << '\n';

  return 0;
}

std::tuple_size<Tupletype>::value //类似于sizeof 需要的只是类型

std::tuple_cat(tuple1,tuple2)//拼接tuple

std::forward_as_tuple

template<class... Types>
  tuple<Types&&...> forward_as_tuple (Types&&... args) noexcept
{
  return tuple<Types&&...>(std::forward<Types>(args)...);
}

==//所有元素相等

!= //见==

swap(t1,t2)//呼唤数据。the same type

=//是一个危险的运算符,包含很多默认隐士转换。

tuple和初值列

显示调用多个参数的构造函数,避免隐士调用单个参数的构造函数发生错误。

template <typename ...types>
class tuple{
    public:
    explicit tuple(const types &...);
    

}
//std::tuple<int, double> t3 = {1, 2.3 }; 错误示例
//	std::tuple<int, double> t1(1, 3.2);
//	std::tuple<int, double> t2{ 1, 2.3 };最好使用make_tuple()

tuple标准输入输出

tuple 重载了<<

后面可能会补充一个paire 和 tuple 转换的函数

 

2026年第十六届MathorCup数学应用挑战赛,C题高质量成品文章、完整解题代码及所有结果表。内容涵盖Python,MATLAB版本代码、Word论文文档无水印(Word版本),并包含详细思路解析,助力参赛队伍高效完成比赛,冲刺高奖项。【核心内容】成品文章包含完整解题思路、模型构建、数据分析与结果讨论。格式规范,符合竞赛论文要求,可直接提交或稍作修改使用。完整代码提供Python和MATLAB语言实现,覆盖数据处理、模型训练、结果可视化全流程。代码模块化设计,注释清晰,便于理解与二次开发。结果表格所有实验数据与结果均已整理成表,直观展示模型性能与对比分析。提供一键转换工具,方便用户根据需求调整论文格式。【产品优势】高效实用:成品论文与代码已通过严格测试,确保结果准确且可复现。全面覆盖:从思路解析到最终成果,一站式解决参赛需求。灵活便捷:支持多平台使用,网盘直发,后续更新免费获取。【适用人群】希望快速掌握解题思路与实现方法的学习者。需要高质量参考材料的科研爱好者。【交付清单】成品论文(Word)Python代码包数据集与结果表MathorCup数学应用挑战赛(原名:MathorCup高校数学建模挑战赛)是由中国优选法统筹法与经济数学研究会主办的面向全日制普通高等院校在校学生的学科竞赛活动。竞赛坚持学会创始人华罗庚教授数学与行业应用实际紧密结合的思想,通过面向实际问题的数学应用竞赛活动,拓宽社会挖掘与培养优秀人才渠道,搭建展示高校学生基础学术训练平台,鼓励广大学生踊跃参加课外科技活动,提高学生运用理论知识解决社会实际问题的能力,在扩大学生科研视野同时,培养其创造精神及合作意识。竞赛题目大都来源于企业实际问题,并每年举办“数学建模在企业中的应用研讨会”,邀请阿里巴巴、MathWorks、滴滴出行等资深算法专家作报告
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值