我使用以下结构作为 STLgenerate_n
算法的输入:
struct GenerateNumber {
GenerateNumber () : i(0) {}
int operator () (void) {
return i++;
}
private:
int i;
};
使用此函子的代码示例是:
std::vector <int> v1 (3);
std::vector <int> v2 (3);
GenerateNumber generateNumber;
std::generate_n (v1.begin (), 3, generateNumber);
std::generate_n (v2.begin (), 3, generateNumber);
但是,结果是两者都v1
包含v2
,{0,1,2}
而不是v2
包含{3,4,5}
。我已经用断点验证了GenerateNumber
' 的构造函数只被调用一次(我知道构造函数被多次调用是没有意义的,但我还是检查了它)。
我知道我可以通过制作i
静态来解决这个问题,但我不明白这种行为。i
为什么在连续调用之间不保留的值?