花狗

导航

 

为什么要代替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;
}

 

posted on 2021-10-14 21:17  花狗  阅读(92)  评论(0)    收藏  举报