我有一个包含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]
?
答案 0 :(得分:1)
第二个valarray的第三个元素确实是a[1][2]
。下标运算符已由std::valarray
重载。没有复制,表达式a[1][2]
的值是valarray中包含的实际对象。