Boost C++: 数据结构---tuple

 1 #include <boost/tuple/tuple.hpp>
 2 #include <boost/tuple/tuple_io.hpp>
 3 #include <boost/tuple/tuple_comparison.hpp>
 4 #include <iostream>
 5 #include <string>
 6
 7 void TestTuple1()
 8 {
 9     typedef boost::tuple<std::string, std::string> person;
10     person p("kevin", "25");
11     std::cout << p << std::endl;
12     std::cout << boost::make_tuple(boost::ref(p), "male", 25) << std::endl;
13 }
14
15 void TestTuple2()
16 {
17     using namespace std;
18     typedef boost::tuple<string, string, int> person;
19     person p("kevin", "male", 25);
20     cout << p.get<0>() << endl;
21     p.get<1>() = "lihua";
22     cout << boost::get<1>(p) << endl;
23 }
24
25 void TestTuple3()
26 {
27     using namespace std;
28     typedef boost::tuple<string, string, int> person;
29     person p1 = boost::make_tuple("kevin","male",25);
30     person p2 = boost::make_tuple("lihua","female",25);
31
32     cout << (p1 != p2) << endl;
33 }
34
35 boost::tuple<std::string, int> func()
36 {
37     return boost::make_tuple("func error", 2003);
38 }
39
40 void TestTuple4()
41 {
42     std::string err_msg;
43     int err_no;
44
45     boost::tie(err_msg, err_no) = func();
46     std::cout << "error: " << err_msg << "error no:" << err_no << std::endl;
47 }
48
49 void TestShuJuJieGou()
50 {
51     TestTuple4();
52 }
时间: 2024-10-12 20:52:02

Boost C++: 数据结构---tuple的相关文章

boost数据结构tuple

boost数据结构tuple tuple(元组)定义了一个有固定数目元素的容器,其中每个元素类型可以不相同,这与其它容器有着本质的区别!vector和array虽然可以容纳很多元素,但是元素的类型必须一致;tuple很有用,它是pair的泛化,可以从函数返回任意数量的值,也可以代替struct组合数据;boost.tuple使用库的方式为C++增加了这种很有用的数据结构,已被纳入C++ 11 TR1标准草案. 标准库中的pair是tuple的特例,即2-tuple(仅能持有两个成员的元组);tu

C++11新的数据结构tuple

Tuple简介 tuple是C++ 11新的标准库之一,其表示N元数组,它相当于有N个成员的结构体,只不过这个结构体的成员都是匿名的.tuple是类似于pair的模板,tuple像是pair的泛化版本,pair只能存放两个成员,而tuple则可以多个成员,相同的是,pair和tuple都允许其成员的类型不一样. tuple的用途 tuple的最常见的用途就是作为函数的返回值,利用它,可以实现函数返回多个值.(虽然C++通过结构体也可以实现返回多个值得能力,但是相对tuple来说会更繁琐一些.)

boost 无锁队列

一哥们翻译的boost的无锁队列的官方文档 原文地址:http://blog.csdn.net/great3779/article/details/8765103 Boost_1_53_0终于迎来了久违的Boost.Lockfree模块,本着学习的心态,将其翻译如下.(原文地址:http://www.boost.org/doc/libs/1_53_0/doc/html/lockfree.html) Chapter 17. Boost.Lockfree 第17章.Boost.Lockfree Ta

tuple,list,dict,set用法

python基础 复杂数据类型(数据结构) tuple:元组,使用小括号表示,包含若干个数据元素,可以为空,数据元素的类型可以为任意类型,它是不可变对象(创建后不可改变,不能增删改除) list:列表,使用中括号表示,包含若干个数据元素,可以为空,数据元素的类型可以为任意类型,它是可变对象,查询和插入效率很低,并且列表越长,查询和插入速度越慢,消耗内存空间小 dict:字典,使用花括号表示,包含若干个键值对(Key-Value Pair,也称为-值对)数据,Key不能重复并且必须为不可变对象,具

python 迭代器和生成器

迭代器 Iterator是迭代器的意思,它的作用是一次产生一个数据项,直到没有为止.这样在 for 循环中就可以对它进行循环处理了.那么它与一般的序列类型(list, tuple等)有什么区别呢?它一次只返回一个数据项,占用更少的内存.但它需要记住当前的状态,以便返回下一数据项.它是一个有着next()方法的对象.而序列类型则保存了所有的数据项,它们的访问是通过索引进行的. 迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末

Storm基本概念以及Topology的并发度

Spouts,流的源头 Spout是Storm里面特有的名词,Stream的源头,通常是从外部数据源读取tuples,并emit到topology Spout可以同时emit多个tupic stream,通过OutputFieldsDeclarer中的declareStream,method来定义 Spout需要实现RichSpout端口,最重要的方法是nextTuple,storm会不断调用接口从spout中取数据,同时需要注意的是Spout分为reliable or unreliable两种

指针辨析:悬垂指针、哑指针、野指针、智能指针

悬垂指针: 1:提出的原因: 请看下面的代码片段: [cpp] view plaincopyprint? int *p=NULL; void main() { int i=10;p=&i; cout<<"第一次:*p = "<<*p<<endl; cout<<"第二次:*p = "<<*p<<endl; } [cpp] view plaincopyprint? int *p=NULL;

Python迭代器和生成器介绍

Python迭代器和生成器介绍 迭代器 迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration. 在for循环中,Python将自动调用工厂函数iter()获得迭代器,自动调用next()获取元素,还完成了检查StopIteration异常的工作. 常用的几个内建数据结构tuple.list.set.dict都支持迭代器,字符串也可以使用迭代操作. 你也可以自己实现一个迭代器,如上所述,只

Python 4.函数参数 返回值与文档查看(基础篇)

本章大纲:(以后文笔格式都会在开头有个大纲) -五大参数- 普通参数 默认参数 关键字参数 收集参数 收集参数解包问题 关键字收集参数 关键字收集参数解包问题 -返回值- -文档查看- -普通参数- 普通参数又名为位置参数,没有默认值,根据具体使用位置进行传值 普通参数和默认参数的不同 普通参数就是如同名字一般普通,没有默认值 而默认参数则可以规定默认值(也就是规定了默认值的普通参数而已) 但是默认参数要牢记一点:默认参数必须指向不变的对象值 请看下面例子 def add_end(L=[]):