⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extract.cpp

📁 c++经典教材 Blitz++ v0.8
💻 CPP
字号:
#include "testsuite.h"#include <blitz/array.h>BZ_USING_NAMESPACE(blitz)class RGB24 {public:    static const int red=0, green=1, blue=2;    RGB24() { }    RGB24(char r, char g, char b)    {         colours[0] = r;        colours[1] = g;        colours[2] = b;    }    unsigned char operator[](int component) const    { return colours[component]; }    bool operator==(const RGB24& x)    {         return colours[0] == x.colours[0]            && colours[1] == x.colours[1]            && colours[2] == x.colours[2];    }private:    unsigned char colours[3];};// declare static data members of RGB24 so we can use them belowconst int RGB24::red;const int RGB24::green;const int RGB24::blue;BZ_DECLARE_MULTICOMPONENT_TYPE(RGB24, unsigned char, 3)BZ_DECLARE_ARRAY_ET_SCALAR_OPS(RGB24)int main(){    Array<TinyVector<int,3>,2> A(8,8);    A = 0;    Array<int,2> B = A(Range(2,5),Range(2,5)).extractComponent(int(),1,3);    B = 1;    Array<int,2> C = A.extractComponent(int(),2,3);    C = 2;    BZTEST(A(1,1)[0] == 0 && A(1,1)[1] == 0 && A(1,1)[2] == 2);    BZTEST(A(3,3)[0] == 0 && A(3,3)[1] == 1 && A(3,3)[2] == 2);    Array<int,2> comp1 = A.extractComponent(int(),0,3);    Array<int,2> comp2 = A.extractComponent(int(),1,3);    Array<int,2> comp3 = A.extractComponent(int(),2,3);    BZTEST(count(comp1 == 0) == 64);    BZTEST(count(comp2 == 1) == 16);    BZTEST(count(comp2 == 0) == 64-16);    BZTEST(count(comp3 == 2) == 64);#ifdef BZ_HAVE_COMPLEX    Array<complex<float>,2> D(4,4);    real(D) = 5;    imag(D) = 6;    BZTEST(count(D == complex<float>(5,6)) == 16);    BZ_USING_NAMESPACE(blitz::tensor)    D = zip(i, j, complex<float>());    BZTEST(D(1,2) == complex<float>(1,2));    BZTEST(D(3,0) == complex<float>(3,0));    D = zip(real(D), -imag(D), complex<float>());    BZTEST(D(1,2) == complex<float>(1,-2));    BZTEST(D(3,0) == complex<float>(3,0));#endif    Array<RGB24,2> E(5,5);    E[RGB24::red] = 30;    E[RGB24::green] = 50;    E[RGB24::blue] = 15;    E[RGB24::green](Range(1,2),Range(1,2)) = 0;    RGB24 z(30,50,15);    BZTEST(count(E == z) == 21);    RGB24 y(30,0,15);    BZTEST(count(E == y) == 4);    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -