考虑一个接受一个或多个参数(例如文件名)的函数。为了使其具有通用性,将其编写为通用迭代器范围是有利的:
template<class Iter>
void function(Iter first, Iter last)
{
// do something
}
现在我们可以通过以下方式调用它,与我们如何存储参数无关:
WhateverContainer container;
function(std::begin(container), std::end(container));
例如,STL 严重依赖这种范式。
现在,假设我们想要使用未存储在容器中的单个参数调用该函数。我们当然可以写:
const int value = 5;
std::vector<int> vec(1, value);
function(std::begin(vec), std::end(vec));
但是这个解决方案对我来说似乎很笨拙和浪费。
问题:是否有更好的低开销方法来创建单个变量的迭代器范围兼容表示?