首页 > 代码库 > 第三章字符串.向量和数组

第三章字符串.向量和数组

练习3.24:请使用迭代器重做3.3.3节的最后一个练习(读入一组整数并把他们存入一个vector对象,先输出第一个和最后一个元素的和,接着输出第二个和倒数第二个元素的和,以此类推)

#include<iostream>#include<vector> using namespace std; int main() {     int a;     vector<int> v;     while(cin>>a)         v.push_back(a);     auto head = v.begin(), tail = v.end();     for(;head<tail-1;++head,--tail)     {         cout<<*head+*(tail-1)<<endl;     }     return 0; }

这是我做的第一个版本,但是在StackOverflow上看到相同问题,发现没有检查vector是空的的情况。修改版见http://stackoverflow.com/questions/26764617/c-primer-5th-edition-exercise-3-24-iterators-in-vectors第三个答案,逆向迭代器还没开始学,先搁置。可先在auto前套一个if(!v.empty())

 

练习3.26:在100页的二分搜索程序中,为什么用的是mid=beg+(end-beg)/2,而非mid = (beg+end)/2?

http://stackoverflow.com/questions/20998982/whats-the-difference-between-mid-begend-2-and-mid-begend-beg-2-in-binary

  1. 不会产生比end大的中间数据,更安全
  2. 指针和迭代器不可相加但可相减。

第三章字符串.向量和数组