在一个问题中有点难以表达,所以我将使用一个例子.让我们说:
generate(myvec.begin(), myvec.end(), func())
我可以拥有它,以便func()可以读取生成的索引,使得:
int func()
{
   if(index<2)
       return 1;
   else
       return 2;
}
这样的myvec[0]=1, myvec[1]=1, myvec[2]=2, myvec[3]=2,..., myvec[N]=2?
简短的回答是"不,不是直接".它可以创建自己应该跟踪索引的变量,但是(在这种情况下)根本就没有对索引本身的访问权限.
在这种情况下,我几乎肯定会使用std::fill两次:
std::fill_n(myVec.begin(), 2, 1);
std::fill(myVec.begin()+2, myVec.end(), 2);
更短,更简单.