如何访问c数组中包含的valarray中的元素

时间:2017-02-24 19:10:53

标签: c++ arrays operator-overloading valarray

我有一个包含valarrays的c数组,如下面的代码片段

所示
#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 个答案:

答案 0 :(得分:1)

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