首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::valarray::operator[]

?

(1)

?

T operator const;

(until C++11)

const T& operator const;

(since C++11)

T& operator;

(2)

?

std::valarray<T> operator const;

(3)

?

std::slice_array<T> operator;

(4)

?

std::valarray<T> operator const;

(5)

?

std::gslice_array<T> operator;

(6)

?

std::valarray<T> operator const;

(7)

?

std::mask_array<T> operator;

(8)

?

std::valarray<T> operator const;

(9)

?

std::indirect_array<T> operator;

(10)

?

检索数组的单个元素或部分。

const返回元素序列的重载会创建一个新的std::valarray对象。非-const重载包含对数组元素的引用的返回类。

参数

返回值

1,2%29A对相应元素的引用

3,5,7,9%29 Astd::valarray对象,该对象包含选定项的副本。

4,6,8,10%29相应的数据结构包含对选定项目的引用

例外

%280%29

前提条件

所选元素必须存在。

注记

  • 的适当值ij,下列属性为真:1%29(a[i] = q, a[i]) == q对一个非康涅斯特人来说a...2%29&a[i+j] == &a[i] + j这意味着valArray元素在内存中是相邻的。3%29&a[i] != &b[j]这适用于每一个对象。ab它们不是彼此的别名。这意味着元素中没有别名,并且可以使用该属性来执行某些类型的优化。
  • 引用在调整尺寸或者当数组被破坏时。

对于重载%283、5、7、9%29,可以使用不同于std::valarray在这种情况下,替换类型具有以下属性:

  • const成员职能std::valarray提供。
  • std::valarray,,,std::slice_array,,,std::gslice_array,,,std::mask_arraystd::indirect_array可以从替换类型构造。
  • 所有接受类型参数的函数conststd::valarray&begin()end()%28,因为C++14%29也应该接受替换类型。
  • 接受两个类型参数的所有函数conststd::valarray&应该接受每一个组合conststd::valarray&以及替代型。
  • 返回类型不会在最嵌套的参数类型上添加两个以上的模板嵌套级别。

注记

切片/掩码/间接索引访问不连锁:v[v==n][std::slice(0,5,2]= x;是一个错误,因为std::mask_array28%v[v==n]%29没有operator[]...

二次

代码语言:javascript
复制
#include <iostream>
#include <valarray>
 
int main() 
{
    std::valarray<int> data = {0,1,2,3,4,5,6,7,8,9};
 
    std::cout << "Initial valarray: ";
    for(int n: data) std::cout << n << ' ';
    std::cout << '\n';
 
    data[data > 5] = -1; // valarray<bool> overload of operator[]
    // the type of data>5 is std::valarray<bool>
    // the type of data[data>5] is std::mask_array<int>
 
    std::cout << "After v[v>5]=-1:  ";
    for(std::size_t n = 0; n < data.size(); ++n) 
      std::cout << data[n] << ' ';  // regular operator[]
    std::cout << '\n';
}

二次

产出:

二次

代码语言:javascript
复制
Initial valarray: 0 1 2 3 4 5 6 7 8 9 
After v[v>5]=-1:  0 1 2 3 4 5 -1 -1 -1 -1

二次

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com