Tuples[VC/C++编程]
本文“Tuples[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
就像我上期所报道的一样,在2002十月尺度会议上,两个库扩大作为尺度库延深,而被通过.
1 是Doug Gregor’s提出的多态函数的object wrappers.
2 Jaakko Järvi's提出的tuple范例.
这两个都是直接来在Boost项目.(Boost项目是一个C++ libraries 调集)上次,我承诺在这期和下一期将介绍这两个扩大的库,这个月,就让我来简单的介绍一下tuple范例.
Tuple Types:一个简单Motivating例子
假定你想用一个函数返回多于一个返回值,比方:
// yields a quotient only
//
int IntegerDivide( int n, int d ) {
return n / d;
}
// Sample use:
cout << "quotient = " << IntegerDivide( 5, 4 );
在这个实现中有什么错误吗? 大概没有,毕竟在编译器中,我们内嵌了整数除法.包含后果也可以四舍五入.
但是,假如我们想做更多.分外,想供应一个办法得到除法其他的信息,比方除法的余数.假如没有改变函数的构造.那么,实现这样的要求的函数不是一件简单的事情.
一种办法我们在函数中加入一个输出变量.
// Example 1(b): Integer division,
// yielding a quotient and remainder,
// one as the return value and one via
// an output parameter
//
int IntegerDivide( int n, int d, int& r ) {
r = n % d;
return n / d;
}
// Sample use:
int remainder;
int quotient = IntegerDivide( 5, 4, remainder );
cout << "quotient = " << quotient
<< "remainder = " << remainder;
这个办法的实现对比,但是我们常常这么实现.这种通过返回值和输出变量来返回函数返回值的办法,看起来有点难以想象.有人大概会说下面的办法更好.
// Example 1(c): Integer division,
// yielding a quotient and remainder,
// this time via two output parameters
//
void IntegerDivide( int n, int d, int& q, int& r ) {
r = n % d;
q = n / d;
}
// Sample use:
int quotient, remainder;
IntegerDivide( 5, 4, quotient, remainder );
cout << "quotient = " << quotient
<< "remainder = " << remainder;
这种办法大概越发调和.但是 还是对比含糊,不令人称心.略微想一想,我们会记得为什么:Ralph Waldo Emerson倡议我们:“一个笨拙的一致性的设法是思惟混乱的怪物”(a foolish consistency is the hobgoblin of little minds).这个版本可以正常工作,但是,假如你认为它不安定的话,我不会责备你.
那么该怎么做呢?在这一点我们普通会想起在尺度库中我们有一个工具:std::pair,毕竟在尺度模板库中有很多函数可以返回几个值 ,iterator范围就是作为一个单独的值-同时,大多通过pair<iterator,iterator>实现的,一样的办法可以运行,以下:
// Example 1(d): Integer division,
// yielding a quotient and remainder,
// this time both in the return value
//
std::pair<int,int> IntegerDivide( int n, int d ) {
return pair<int,int>( n/d, n%d );
}
// Sample use:
pair<int, int> quot_rem = IntegerDivide( 5, 4 );
cout << "quotient = " << quot_rem.first
<< "remainder = " << quot_rem.second;
可以看出这是一个称心的做法,同时,它还可以提高.
以上是“Tuples[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:What are you,Anyway?
- ·下一篇文章:破解Access(*.mdb)的密码
- ·中查找“Tuples”更多相关内容
- ·中查找“Tuples”更多相关内容