C++ valarray 库 - 函数 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。

异常

基本保证 - 如果对元素执行的任何操作引发异常。

数据竞争

访问所有有效复制的元素。

示例

以下示例说明了 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 
valarray.htm
广告