在inner_product模块的cplusplus页面中,他们提供了一个代码示例:
int init = 100;
int series1[] = {10,20,30};
int series2[] = {1,2,3};
std::cout << "using default inner_product: ";
std::cout << std::inner_product(series1,series1+3,series2,init);
std::cout << '\n';
我看到他们在调用inner_product funtcion时使用series1+3
。
在数组变量中添加“3”究竟是什么?
答案 0 :(得分:4)
在数组变量中添加“3”究竟是什么?
数组操作数衰减为指向数组第一个元素的指针。将3添加到该指针,使得结果是指向第一个(即索引3处的元素)之后的3个元素的指针,该元素紧接在数组的边界之外。这个加法相当于std::end(series1)
,在我看来这更加惯用。
我假设series1本身是指向数组第一个元素的指针
你认为错了。 series1
不是指针,而是数组。但是,数组的id表达式(变量名称的替代值)将在值上下文中衰减为指针。