C++可平凡复制的元组
原文
标::元组,无法优化性能
.可平凡复制
可使memcpy
复制对象进二进制
缓冲.
元<整 I,型名 T>构 元素持有者{
用 类型=T;T 值;
};
元<型名 S,型名...T>构 元组实现;
元<型名...T,整...I>
构 元组实现<引序<I...>,T...>
:元素持有者<I,T>...{
元组实现()=默认;
元组实现(T&&...t):元素持有者<I,T>{前向<T>(t)}...{}
};
元<型名...T>
构 元组:元组实现<造引序<的大小...(T)>,T...>{
用 基=元组实现<造引序<的大小...(T)>,T...>;
用 基::基;
};
元<整 I,型名 T>
推导(动)取(常 元素持有者<I,T>&h){ 中 h.值; }
元<整 I,型名 T>推导(动)取(元素持有者<I,T>&h){ 中 h.值; }
//测试代码:
空 测试(){
元组<整,双精>tp(1,2.5);
双精 t=取<1>(tp);
断定(t==2.5);
静断(是可平凡复制值<元组<整,双精>>);
}
测试表明元组<整,双精>
是可平凡复制的.还可以再加一些辅助
方法:
元<型名 T>构 元组大小;
元<型名...T>构 元组大小<元组<T...>>
:公 整常<整,的大小...(T)>{};
元<型名 T>
内联 常式 动 元组大小值=元组大小<退化型<T>>::值;
元<类 F,类 元组,整...I>
内联 常式 推导(动)应用实现(F&&f,元组&&tp,引序<I...>){
中 调用(前向<F>(f),取<I>(前向<元组>(tp))...);
}
元<类 F,类 元组>
内联 常式 推导(动)应用(F&&f,元组&&tp){
中 应用实现(
前向<F>(f),前向<元组>(tp),
造引序<元组大小值<移除引用型<元组>>>{});
}
//测试代码:
空 测试(){
元组<整,整>tp(42,1);
静断(是可平凡复制值<推导(tp)>);
静断(元组大小值<推导(tp)>==2);
动 中=应用([](整 a,整 b){中 a+b;},tp);
断定(中==43);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现