Standard C++ Library Copyright 1998, Rogue Wave Software, Inc. NAME slice - A numeric array class for representing a BLAS-like slice from an array. SYNOPSIS #include <valarray> class slice ; DESCRIPTION slice allows you to represent a BLAS-like slice from an array. A BLAS slice contains a starting index, a length, and a stride. The index indicates the first element in the slice, the length determines the number of elements, and the stride indicates the interval between elements in the origi- nal array. For instance, the slice (1,3,2) applied to the array (1,2,3,4,5,6,7) produces the array (2,4,6). When applied to a valarray using the slice subscript opera- tor (see valarray) a slice produces a slice_array. The slice_array gives a view into the original valarray that is tailored to match parameters of the slice. The elements in a slice_array are references to the elements in the original array. This means you need to explicitly copy the slice_array into another valarray in order to have a dis- tinct array. INTERFACE class slice { public: // constructors slice(); slice(size_t, size_t, size_t); // Accessors size_t start() const; size_t size() const; size_t stride() const; }; CONSTRUCTORS slice(); Creates a slice specifying no elements. This constructor is only intended to allow the creation of arrays of slices. slice(size_t start, size_t length, size_t stride); Creates a slice with starting index, length, and stride as indicated by the arguments. slice(const slice&) Creates a slice with starting index, length, and stride as indicated by the slice argument. ACCESSORS size_t start(); Returns the starting index of the slice. size_t size(); Returns the length of the slice. size_t stride(); Returns the stride of the slice. EXAMPLE // // slice.cpp // #include "valarray.h" // Contains a valarray stream inserter using namespace std; int main(void) { int ibuf[10] = {0,1,2,3,4,5,6,7,8,9}; // create a valarray of ints valarray<int> vi(ibuf,10); // print it out cout << vi << endl; // print out a slice cout << valarray<int>(vi[slice(1,3,2)]) << endl; return 0; } Program Output [0,1,2,3,4,5,6,7,8,9] [1,3,5] WARNINGS If your compiler does not support namespaces, then you do not need the using declaration for std. SEE ALSO valarray, slice_array, gslice, gslice_array, mask_array, indirect_array
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |