C++其他库类介绍

来源:互联网 发布:ios广告屏蔽软件 编辑:程序博客网 时间:2024/06/15 00:46

complex

    complex头文件为复数提供了一个complex类模板,专用于float、long和long double 。这个类提供了标准的复数运算及能够处理复数的标准函数。

 

valarray

    valarray类模板是面向数值计算的,它在头文件valarray中声明。
    #include<valarray>
    valarray<double> vad1(10),vad2(10),vad3(10);

 

    该类重载了所有算术操作符,例如:
    vad3 = vad1 + vad2;      // + overloaded
    vad3 = vad1 * vad2;      // * overloaded
    vad3 = 2.5 * vad3;         // * overloaded
    vad3 *= 2.5;
                  // *= overloaded

 

    该类还重载了数学函数,使之接受一个valarray参数,并返回一个valarray对象,例如:
    vad3 = log(vad1);        // log() overloaded

 

    也可以使用apply()方法,该方法也适用于非重载函数:
    vad3 = vad1.apply(log);
    该方法不修改调用对象,而是返回一个包含结果的新对象。

 

    valarray类还提供了:
    sum()方法,计算valarray对象中所有元素的和。
    size()方法,返回元素数。
    max()方法,返回最大的元素值。
    min()方法,返回最小的元素值。
    resize()方法,重新设置valarray数组大小,并对其进行初始化。
    shift()方法,将valarray数组移动,参数为正者左移,为负者右移,移动后由0填充剩余位。
    cshift()方法,将valarray数组的数据进行循环移动,参数为正者左移为负就右移。

 

    由于valarray类不支持超尾特性,所以应避免将其使用在STL接口上。

 

valarray类其他特性

    假设numbers是一个valarray<double>对象,则下面的语句将创建一个bool值数组,其中vbool[i]被设置为numbers[i] > 9 的值,即true或false。
    valarray<bool> vbool = numbers > 9 ;

 

slice

    slice类对象可用作数组索引,在这种情况下,它代表的不是一个值而是一组值。slice对象被初始化为三个整数值:起始索引、索引数和跨距。


    起始索引是第一个被选中的元素的索引;
    索引数指出要选择多少个元素;
    跨距表示元素之间的间隔。

 

    例如,slice(1,4,3)创建的对象表示选择4个元素,它们的索引分别是1、4、7和10。也就是说,从起始索引开始,加上跨距得到下一个元素的索引,依此类推,直到选择了4个元素。

 

    如果varint是一个valarray<int>对象,则下面的语句将把第1、4、7、10个元素都设置为10:
    varint[slice(1,4,3)] = 10;          // set selected elements to 10

 

    这种特殊的下标指定功能让其能够使用一个一维valarray对象来表示二维数据。


    例如,假设要表示一个4行3列的数组,可以将信息存储在一个包含12个元素的valarray对象中,然后使用一个slice(0,3,1)对象作为下标,来表示元素0、1和2,即第一行。同样,下标slice(0,4,3)表示元素0、3、6和9,即第一列。

 

gslice

    gslice类可以表示多维下标。
    详细介绍可查看
    http://www.cplusplus.com/reference/std/valarray/gslice/