首先請(qǐng)大家思考一個(gè)問(wèn)題:以下6個(gè)問(wèn)題可否共享一段代碼?
答案是肯定的。采用泛型編程對(duì)問(wèn)題進(jìn)行抽象,抽取出以上問(wèn)題的共性即算法(algorithm)、容器(container)和迭代器(itera),這也是STL(Standard Template Library, 標(biāo)準(zhǔn)模板庫(kù))的三要素。
1 template <class Iterator, class Act, class Test> 2 3 void process(Iterator begin, Iterator end, Act act, Test test) 4 5 //對(duì)容器中在給定范圍內(nèi)(即起于begin止于end)所有滿足給定條件的元素進(jìn)行處理 6 7 { 8 9 for (; begin != end; ++begin) //從頭至尾遍歷容器內(nèi)的元素10 11 if (test(*begin)) act(*begin); //若當(dāng)前元素滿足條件,則對(duì)其采取行動(dòng)12 13 }
網(wǎng)友評(píng)論