我将以下内容作为对STL s generate_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
,以包含。 我用一个断点核实,“
I know I can solve this by making i
static, but I don t understand this behavior. How come the value of i
is not kept between consecutive calls?