本篇博文的開始,先介紹一道書上看到的智力題:有20瓶藥丸,其中19瓶裝有1克/粒的藥丸,余下一瓶裝有1.1克/粒的藥丸。有一台稱重精准的天平,只是用一次天平的情況下如何找出比較重的那瓶藥丸?
好了,直接公布答案。從藥瓶#1取出一粒藥丸,從藥瓶#2取出兩粒,從藥瓶#3取出三粒,依此類推。如果每粒藥丸均重1克,則稱得總重量為210克(1 + 2 + … + 20 = 20 * 21 / 2 = 210),“多出來的”重量必定來自每粒多0.1克的藥丸。藥瓶的編號可由算式(weight - 210 grams) / 0.1 grams得出。因此,若這堆藥丸稱得重量為211.3克,則藥瓶#13裝有較重的藥丸。
各位是否想出了這樣的方法呢(反正我是沒有,哈哈)?
接下來就直奔主題,本文著重介紹標准庫類型,但不面面俱到,僅以其中兩種最常見的類型string和vector為例,初窺標准庫,其余內容見後續博客。
標准庫String類型
標准庫vector類型
迭代器簡介
為了形象理解如上所述,舉個簡單的例子:讀取一組整數到vector對象,計算首尾配對的元素和並輸出。
1 vector<int> ivec; 2 int ival; 3 4 cout << "Enter numbers: " << endl; 5 while (cin >> ival) 6 ivec.push_back(ival); 7 8 if (ivec.size() == 0) 9 { 10 cout << "NO Elemnts!" << endl; 11 return -1; 12 } 13 14 cout << "Sum of each pair of counterpart elements in the vector: " << endl; 15 16 vector<int>::size_type cnt = 0; 17 vector<int>::iterator first, last; 18 for (first = ivec.begin, last = ivec.end() - 1; first < last; ++first, --last) 19 { 20 cout << *first + *last << " "; 21 ++cnt; 22 if (cnt % 6 == 0) 23 cout << endl; 24 } 25 26 if (first == last) 27 cout << endl 28 << "The center element is: " 29 << ivec[first] << endl;