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

📄 blitz_2.html

📁 A C++ class library for scientific computing
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<HTML><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><!-- Created on October, 14  2005 by texi2html 1.64 --><!-- Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)            Karl Berry  <karl@freefriends.org>            Olaf Bachmann <obachman@mathematik.uni-kl.de>            and many others.Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>Send bugs and suggestions to <texi2html@mathematik.uni-kl.de> --><HEAD><TITLE>Blitz++: Arrays</TITLE><META NAME="description" CONTENT="Blitz++: Arrays"><META NAME="keywords" CONTENT="Blitz++: Arrays"><META NAME="resource-type" CONTENT="document"><META NAME="distribution" CONTENT="global"><META NAME="Generator" CONTENT="texi2html 1.64"></HEAD><BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"><A NAME="SEC34"></A><TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0><TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_1.html#SEC33"> &lt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC35"> &gt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_3.html#SEC80"> &lt;&lt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top"> Up </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_3.html#SEC80"> &gt;&gt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD></TR></TABLE><H1> 2. Arrays </H1><!--docid::SEC34::--><BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="blitz_2.html#SEC35">2.1 Getting started</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR><TR><TD ALIGN="left" VALIGN="TOP"><A HREF="blitz_2.html#SEC40">2.2 Public types</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Public types declaration for Array</TD></TR><TR><TD ALIGN="left" VALIGN="TOP"><A HREF="blitz_2.html#SEC41">2.3 Constructors</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Array constructors</TD></TR><TR><TD ALIGN="left" VALIGN="TOP"><A HREF="blitz_2.html#SEC51">2.4 Indexing, subarrays, and slicing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to access the elements of an Array?</TD></TR><TR><TD ALIGN="left" VALIGN="TOP"><A HREF="blitz_2.html#SEC55">2.4.4 Slicing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The slicing machinery</TD></TR><TR><TD ALIGN="left" VALIGN="TOP"><A HREF="blitz_2.html#SEC59">2.5 Debug mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to debug a program that uses Blitz++?</TD></TR><TR><TD ALIGN="left" VALIGN="TOP"><A HREF="blitz_2.html#SEC60">2.6 Member functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Array member functions</TD></TR><TR><TD ALIGN="left" VALIGN="TOP"><A HREF="blitz_2.html#SEC64">2.7 Global functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Array global functions</TD></TR><TR><TD ALIGN="left" VALIGN="TOP"><A HREF="blitz_2.html#SEC65">2.8 Inputting and Outputting Arrays</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Inputting and outputting Array's</TD></TR><TR><TD ALIGN="left" VALIGN="TOP"><A HREF="blitz_2.html#SEC68">2.9 Array storage orders</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The storage of Array</TD></TR></TABLE></BLOCKQUOTE><P><A NAME="Array intro"></A><HR SIZE="6"><A NAME="SEC35"></A><TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0><TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC34"> &lt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC36"> &gt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC34"> &lt;&lt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC34"> Up </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC40"> &gt;&gt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD></TR></TABLE><H2> 2.1 Getting started </H2><!--docid::SEC35::--><P>Currently, Blitz++ provides a single array class, called<CODE>Array&#60;T_numtype,N_rank&#62;</CODE>.  This array class provides a dynamicallyallocated N-dimensional array, with reference counting, arbitrary storageordering, subarrays and slicing, flexible expression handling, and manyother useful features.</P><P><HR SIZE="6"><A NAME="SEC36"></A><TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0><TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC35"> &lt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC37"> &gt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC34"> &lt;&lt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC35"> Up </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC40"> &gt;&gt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD></TR></TABLE><H3> 2.1.1 Template parameters </H3><!--docid::SEC36::--><P>The <CODE>Array</CODE> class takes two template parameters:</P><P><UL><LI><CODE>T_numtype</CODE>is the numeric type to be stored in the array.  <CODE>T_numtype</CODE> can be anintegral type (<CODE>bool</CODE>, <CODE>char</CODE>, <CODE>unsigned char</CODE>, <CODE>shortint</CODE>, <CODE>short unsigned int</CODE>, <CODE>int</CODE>, <CODE>unsigned int</CODE>,<CODE>long</CODE>, <CODE>unsigned long</CODE>), floating point type (<CODE>float</CODE>,<CODE>double</CODE>, <CODE>long double</CODE>), complex type (<CODE>complex&#60;float&#62;</CODE>,<CODE>complex&#60;double&#62;</CODE>, <CODE>complex&#60;long double&#62;</CODE>) or any user-definedtype with appropriate numeric semantics.<P><LI><CODE>N_rank</CODE><A NAME="IDX5"></A><A NAME="IDX6"></A>is the <STRONG>rank</STRONG> (or dimensionality) of the array.  This should be apositive integer. <P></UL><P>To use the <CODE>Array</CODE> class, include the header <CODE>&#60;blitz/array.h&#62;</CODE> anduse the namespace <CODE>blitz</CODE>:</P><P><A NAME="IDX7"></A><A NAME="IDX8"></A><A NAME="IDX9"></A></P><P><TABLE><tr><td>&nbsp;</td><td class=example><pre>#include &#60;blitz/array.h&#62;using namespace blitz;Array&#60;int,1&#62;    x;    // A one-dimensional array of intArray&#60;double,2&#62; y;    // A two-dimensional array of double..Array&#60;complex&#60;float&#62;, 12&#62; z; // A twelve-dimensional array of complex&#60;float&#62;</pre></td></tr></table></P><P>When no constructor arguments are provided, the array is empty, and nomemory is allocated.  To create an array which contains some data, providethe size of the array as constructor arguments:</P><P><TABLE><tr><td>&nbsp;</td><td class=example><pre>Array&#60;double,2&#62; y(4,4);   // A 4x4 array of double</pre></td></tr></table></P><P>The contents of a newly-created array are garbage.  To initializethe array, you can write:</P><P><TABLE><tr><td>&nbsp;</td><td class=example><pre>y = 0;</pre></td></tr></table></P><P>and all the elements of the array will be set to zero.  If the contents ofthe array are known, you can initialize it using a comma-delimited list ofvalues.  For example, this code excerpt sets <CODE>y</CODE> equal to a 4x4identity matrix:</P><P><TABLE><tr><td>&nbsp;</td><td class=example><pre>y = 1, 0, 0, 0,    0, 1, 0, 0,    0, 0, 1, 0,    0, 0, 0, 1;</pre></td></tr></table></P><P><HR SIZE="6"><A NAME="SEC37"></A><TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0><TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC36"> &lt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC38"> &gt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC38"> &lt;&lt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC35"> Up </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC40"> &gt;&gt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD></TR></TABLE><H3> 2.1.2 Array types </H3><!--docid::SEC37::--><P>The <CODE>Array&#60;T,N&#62;</CODE> class supports a variety of arrays:</P><P><UL><A NAME="IDX10"></A><LI>Arrays of scalar types, such as <CODE>Array&#60;int,1&#62;</CODE> and<CODE>Array&#60;float,3&#62;</CODE> <P><A NAME="IDX11"></A><A NAME="IDX12"></A><LI>Complex arrays, such as <CODE>Array&#60;complex&#60;float&#62;,2&#62;</CODE><P><A NAME="IDX13"></A><A NAME="IDX14"></A><A NAME="IDX15"></A><A NAME="IDX16"></A><A NAME="IDX17"></A><A NAME="IDX18"></A><A NAME="IDX19"></A><A NAME="IDX20"></A><LI>Arrays of user-defined types.  If you have a class called<CODE>Polynomial</CODE>, then <CODE>Array&#60;Polynomial,2&#62;</CODE> is an array of<CODE>Polynomial</CODE> objects.  <P><A NAME="IDX21"></A><A NAME="IDX22"></A><A NAME="IDX23"></A><LI>Nested homogeneous arrays using <CODE>TinyVector</CODE> and<CODE>TinyMatrix</CODE>, in which each element is a fixed-size vector or array.For example, <CODE>Array&#60;TinyVector&#60;float,3&#62;,3&#62;</CODE> is a three-dimensionalvector field.<P><LI>Nested heterogeneous arrays, such as <CODE>Array&#60;Array&#60;int,1&#62;,1&#62;</CODE>, inwhich each element is a variable-length array.</UL><P><HR SIZE="6"><A NAME="SEC38"></A><TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0><TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC37"> &lt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC39"> &gt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC39"> &lt;&lt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC35"> Up </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_2.html#SEC40"> &gt;&gt; </A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD></TR></TABLE><H3> 2.1.3 A simple example </H3><!--docid::SEC38::--><P>Here's an example program which creates two 3x3 arrays, initializesthem, and adds them:</P><P><TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>#include &#60;blitz/array.h&#62;using namespace blitz;int main(){    Array&#60;float,2&#62; A(3,3), B(3,3), C(3,3);    A = 1, 0, 0,        2, 2, 2,        1, 0, 0;    B = 0, 0, 7,        0, 8, 0,        9, 9, 9;    C = A + B;    cout &#60;&#60; "A = " &#60;&#60; A &#60;&#60; endl         &#60;&#60; "B = " &#60;&#60; B &#60;&#60; endl         &#60;&#60; "C = " &#60;&#60; C &#60;&#60; endl;    return 0;}</FONT></pre></td></tr></table></P><P>and the output:</P><P><TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>A = 3 x 3[         1         0         0           2         2         2           1         0         0 ]B = 3 x 3[         0         0         7           0         8         0           9         9         9 ]C = 3 x 3[         1         0         7 

⌨️ 快捷键说明

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