C++ Valarray 库 - Function operator[]
描述
它访问元素或下标。
声明
以下是 std::valarray::operator[] 函数的声明。
T operator[] (size_t n) const; T& operator[] (size_t n);
C++11
const T& operator[] (size_t n) const; T& operator[] (size_t n);
参数
n − 它是 valarray 中元素的位置。
slc − 它是一个切片对象,指定选择了 valarray 的哪些元素。
gslc − 它是一个 gslice 对象,指定选择了 valarray 的哪些元素。
msk − 它是一个 valarray
,其元素标识 *this 的每个元素是否被选中: 如果 *this 中的元素在 msk 中的对应元素设置为 true,则它是返回的子数组的一部分,否则不是。 ind − 它是一个 valarray
,其元素标识 *this 的哪些元素被选中: ind 中的每个元素都是 *this 中一个元素的索引,该元素将成为返回的子数组的一部分。
返回值
它返回 *this。
异常
Basic guarantee − 如果对元素执行的任何操作引发异常。
数据竞争
所有有效复制的元素都被访问。
示例
在下面的示例中解释了 std::valarray::operator[] 函数。
#include <iostream> #include <valarray> int main () { std::valarray<int> myarray (10); myarray[std::slice(2,3,3)]=10; size_t lengths[]={2,2}; size_t strides[]={6,2}; myarray[std::gslice(1, std::valarray<size_t>(lengths,2), std::valarray<size_t>(strides,2))]=20; std::valarray<bool> mymask (10); for (int i=0; i<10; ++i) mymask[i]= ((i%2)==0); myarray[mymask] += std::valarray<int>(3,5); //indirect: size_t sel[]= {2,5,7}; std::valarray<size_t> myselection (sel,3); myarray[myselection]=99; std::cout << "myarray: "; for (size_t i=0; i<myarray.size(); ++i) std::cout << myarray[i] << ' '; std::cout << '\n'; return 0; }
让我们编译并运行上面的程序,这将产生以下结果 −
myarray: 3 20 99 20 3 99 3 99 13 20