假设我有以下函数:
void sum(const std::vector<int*>& input) {
return ... ; // the sum
}
我在某处存储了一个整型指针向量
...
std::vector<std::unique_ptr<int>> my_ints;
是否有一种方法可以将my_ints
传递到sum()
,而无需任何额外的分配,例如unique_ptrs的中间向量转换为原始指针的向量?
显然,我可以refacor sum()
来获取unique_ptrs的向量,或者重载它,但是我希望找到一种不必这样做的方法,让用户决定是使用unique_ptrs的向量还是原始指针。
2条答案
按热度按时间omqzjyyz1#
不像你想的那样,但是你应该换一种方式来看待
sum()
,它看起来像一个在范围上操作的算法,所以你应该让它更像这样:然后突然之间,你可以开始使用范围做很酷的事情!
这是一个会随着使用而变化的范围!然后你可以像这样将它输入到你的
sum()
中:也查找
std::accumulate()
,它在这里做了你想要的,我会说。4zcjmb1e2#
不,绝对没有办法在不更改
sum
方法的情况下将这些指针值传递给该方法。