operator[]
描述 (Description)
它访问元素或下标。
声明 (Declaration)
以下是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);
参数 (Parameters)
n - 它是valarray中元素的位置。
slc - 它是一个切片对象,用于指定选择valarray的哪些元素。
gslc - 它是一个gslice对象,用于指定选择valarray的哪些元素。
msk - 这是一个valarray
使用其元素来识别* this的每个元素是否被选中:如果* this中的元素将msk中的对应元素设置为true,则它是返回的子数组的一部分,否则它不是.. ind - 这是一个valarray
其元素标识* this的哪些元素被选中:ind中的每个元素都是* this中元素的索引,它将成为返回子数组的一部分。
返回值 (Return Value)
它返回* this。
异常 (Exceptions)
Basic guarantee - 如果对元素执行的任何操作引发异常。
数据竞争 (Data races)
访问有效复制的所有元素。
例子 (Example)
在下面的例子中解释了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