C++ 像Python一样使用元组tuple - std::tuple

std::tuple

std::tuple是C++11中引入的数据结构,可以将不同类型的值放到一起,类似python中的tuple

常用方法:

std::get 按索引获取值,如类型不是const,也可以用来设置值,如:std::get<0>(tuple) = value;

std::tuple_size 获取长度

std::tie 挨个将元素存入变量,需要类型一致

示例:

复制代码
 1 #include <iostream>
 2 #include <string>
 3 #include <functional>
 4 #include <vector>
 5 #include <tuple>
 6 
 7 int main() 
 8 {
 9     using tuple_student = std::tuple<int, std::string, int, double>;
10     
11     tuple_student tuple_1 = std::make_tuple(1, "Tom", 180, 71.2);
12     tuple_student tuple_2 = std::make_tuple(2, "Rick", 188, 72.4);
13     tuple_student tuple_3 = std::make_tuple(3, "Bob", 166, 68.0);
14     std::cout << std::tuple_size<tuple_student>::value << '\n';
15     
16     std::vector<tuple_student> vStudents{ tuple_1, tuple_2, tuple_3 };
17 
18     for (tuple_student t : vStudents)
19     {
20         std::cout << "No: " << std::get<0>(t) << '\n' <<
21             "Name: " << std::get<1>(t) << '\n' <<
22             "Height: " << std::get<2>(t) << '\n' <<
23             "Weight: " << std::get<3>(t) << '\n' << std::endl;
24     }
25 
26     for (tuple_student t: vStudents)
27     {
28         int No; std::string name; int height; double weight;
29         std::tie(No, name, height, weight) = t;
30         std::cout << "No: " << No << '\n' <<
31             "Name: " << name << '\n' <<
32             "Height: " << height << '\n' <<
33             "Weight: " << weight << '\n' << std::endl;
34     }
35 
36     //C++17 new bind operation
37     for (tuple_student t : vStudents)
38     {
39         auto [ No, name, height, weight ] = t;
40         std::cout << "No: " << No << '\n' <<
41             "Name: " << name << '\n' <<
42             "Height: " << height << '\n' <<
43             "Weight: " << weight << '\n' << std::endl;
44     }
45 
46     return 0;
47 }
复制代码

 

posted @   Asp1rant  阅读(551)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示