3.21
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector<string> x{"hello","world","NG"};
auto i = x.begin();
while (x.begin() != x.end(),i!=x.end()) { //注意:迭代器i一定不能等于x.end(),否则溢出.
cout << *i << endl;
++i;
}
return 0;
}
3.22
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
string x{"helloworldNG"};
//注意,书上有多一个条件,就是&& !i->empty(
//这是错误的,因为string_iterator没有这个函数)
//经过1半个多小时的讨论研究,书上是没错的
//empty是不能在容器以外的地方用的
//例如string使用了begin之后,实际上是指向一个
//类型为char的元素,是没有empty函数的
//但是指向vector<string>就可以的
//例如 vector<string>{"hello","world","ng"}
for (auto i = x.begin();i != x.end() ;++i) {
*i = toupper(*i);
}
cout << x << endl;
return 0;
}
3.23
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector<int> x{2,4,5,6,7,8,9,11,22,31};
for (auto i = x.begin();i != x.end();++i) {
*i *= 2;
cout << *i << endl;
}
return 0;
}