为什么要代替for循环
如果用for,每次的循环,都要调用函数end ;
for (auto i = tmp.begin(); i != tmp.end(); i++) {
i->test();
}
如果改用下面方法则只会调用一次end;会大大的提升效率
std::for_each(tmp.begin(), tmp.end(), mem_fun_ref(&A::test));
class A {
public:
A() {
cout << "A"<<endl;
}
A(const A&) {
cout << "A&&&&" << endl;
}
void test() {
cout << 11 << endl;
}
~A() {
cout << "~A" << endl;
}
};
int main() {
vector<A> tmp;
std::cout << " ***************" << endl;
A a;
std::cout << " ***************" << endl;
tmp.push_back(a);
std::cout << " ***************" << endl;
tmp.push_back(a);
std::cout << " ***************" << endl;
for (auto i = tmp.begin(); i != tmp.end(); i++) {
i->test();
}
std::cout << " -----------------" << endl;
std::for_each(tmp.begin(), tmp.end(), mem_fun_ref(&A::test));
std::cout << " ++++++++++" << endl;
return 0;
}
浙公网安备 33010602011771号