目录

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 
↑回到顶部↑
WIKI教程 @2018