2017-02-24 49 views
0

我已经交流数组,它包含valarrays如下面的代码剪断,如何处理中AC阵列valarray中内接一个元素

#include <iostream> 
#include <valarray> 
#include <math.h> 

using namespace std; 

typedef uint uint32_t; 
typedef std::valarray<uint32_t> uivector; 

int main() 
{ 
    uivector a[] = { uivector(uint32_t(1),8), uivector(uint32_t(2),4), uivector(uint32_t(3),5) }; 
} 

现在我该怎样访问,比方说,对第三个元素第二个valarray(价值有2),没有做任何副本,并在一个单行的声明?是否有可能超载[]运营商实现相同?像a[1][2]

回答

1

第二个valarray的第三个元素的确是a[1][2]。下标运算符已被std::valarray超载。没有复制,表达式a[1][2]的值是valarray中包含的实际对象。

+0

[Demo](http://ideone.com/WS998k) –

+0

不,这个问题没有。尝试一个超出界限的索引,如[1] [20],你仍然会看到零被打印出来,并且不会显示索引超出界限的错误。 – Naveen

+0

是否有可能超载第二个[]运算符进行超出界限检查? – Naveen

相关问题