在c++ 98标准的STL中,只有一个pair<T1, T2>可以容纳两个不同的类型。
我们知道在Python中,有一种tuple,可以把任意多类型的不同数据组成一组tuple,如今的tr1标准,也支持这种数据结构啦!!
Boost中的tuple
这个是从Boost中完全采纳的,所以先看Boost用法:
声明:
boost::tuple < std::string, int, double > ta("str", 10, 5.5);[......]
在c++ 98标准的STL中,只有一个pair<T1, T2>可以容纳两个不同的类型。
我们知道在Python中,有一种tuple,可以把任意多类型的不同数据组成一组tuple,如今的tr1标准,也支持这种数据结构啦!!
Boost中的tuple
这个是从Boost中完全采纳的,所以先看Boost用法:
声明:
boost::tuple < std::string, int, double > ta("str", 10, 5.5);[......]
正则表达式自Boost 1.18推出,目前已经成为C++11(tr1)的标准部分。
本文以Boost 1.39正则表达式为基础,应该广泛适用于其他版本的Boost。对namespace稍加修改,即可适用tr1标准。
0、regex对象
类似于Java中的Pattern,Boost中的正则表达式对象为:
boost::regex
常见构造方法2种:
// 1. 直接使用正则表达式的字符串构造。
boost::regex reg1("\\d{18}");[......]
智能指针(smart_ptr)是Boost各组件中,应用最为广泛的一个。
重所周知,C++没有提供Java中的垃圾回收机制。因此,在堆上申请的内存,需要自行回收,这就很容易导致内存泄漏。虽然STL提供了auto_ptr,但是受限太多(例如,不能放到容器中。。。),因此很少有人使用。
Boost从很早就提供了如下的智能指针,并且功能一直保持稳定:
题目:输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如:
10
/ \
5 12
/ \
4 7
输入整数22,输出如下路径:
10 12
10 5 7
解:就是最简单的先序遍历,只不过要记录路径,可以使用数组,我这里用的stl::vector。
注意left和right遍历后,要回退当前结点在path中状态。
算法:
v[......]
int array[m][n];
这个二维数组,可以堪称是m个长度为n的一维数组。
在内存中排列的方式是[0][1]..[n-1] [0][1]...[n-1]....一共m组这样的。
在访问时,array[m][n] = *(*(array+m)+n),对N维的数组取值时要用到N个*。
参考了这个:http://blog.csdn.net/hai836045106/article/details/6729756[......]