标签:
本篇博文的开始,先介绍一道书上看到的智力题:有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;
标签:
原文地址:http://www.cnblogs.com/huashu/p/4246923.html