//把text第一段全都改成大写形式,然后再输出它#include <iostream>usingnamespacestd;
#include <string>#include <vector>usingstd::vector;
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::string;
int main() {
vector<string> text{"hellow"," ", "world"};
//这里,试过string text,用getline,然后结果是没有empty成员,暂时不知道怎么回事for (auto it = text.begin();
it != text.end() && !it->empty(); ++it){
for(auto &c : *it)
c = toupper(c);
cout<<*it;
}
}
练习3.23
//创建一个含有10个整数的vector对象,然后使用迭代器将所有元素的值都变成原来的两倍#include <iostream>usingnamespacestd;
#include <string>#include <vector>usingstd::vector;
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::string;
int main() {
vector<int> num;
//这里原来写的num(10),但经测试,会出现前10个初始化为0,输入的数字从第11个开始插,最后有10个0和10个数...所以//vector最好是不限定大小(是这么个说法吗int temp;
for (int i = 0; i< 10; i++){
cin >> temp;
num.push_back(temp);
}
for (auto it = num.begin();
it != num.end(); ++it){
*it = (*it) + (*it);
cout<<*it<<" ";
cout<< num.size()<<endl;
}
}
练习3.25
//p93的划分分数段,用迭代器改写该程序#include <iostream>usingnamespacestd;
#include <string>#include <vector>usingstd::vector;
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::string;
int main() {
vector<unsigned> scores(11,0);
unsigned grade;
auto beg = scores.begin(), end = scores.end();
while(cin >> grade){
if (grade <= 100){
grade = grade/10;// 成绩的十位数字while(grade != 0){//beg移动到scores的对应位置
++beg;
--grade;
}
++(*beg);//计数
beg = scores.begin();//beg恢复原状
}
}
while(beg != end){//逐个输出scores的值cout<<*beg<<" ";
beg++;
}
//若添加cout<<*end<<endl,会输出12个值,最后一个固定是0,也就是说//end是最后一个元素的后一个位置
}
练习3.42
//将含有整数元素的vector对象拷贝给一个整型数组#include <iostream>usingnamespacestd;
#include <string>#include <vector>usingstd::vector;
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::string;
int main() {
vector<int> a{1,2,3,4,5};
int b[5];
auto beg = a.begin(), end = a.end();
int i = 0;
while (beg != end){
b[i++] = *(beg++);
}
for (i = 0; i < 5; i++)
cout<< b[i]<< " "<< endl;
}
练习3.43
//输出ia的元素#include <iostream>usingnamespacestd;
#include <string>#include <vector>usingstd::vector;
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::string;
//版本1:范围for管理迭代过程int main() {
int ia[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
for (int (&row)[4] : ia)//题目中要求不得使用auto,注意&rowfor (int &col : row)
cout<< col <<" ";
cout<< endl;
}
//版本2:下标运算符int main() {
int ia[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int row,col;
for (row = 0; row < 3;++row)
for (col = 0; col < 4; ++col)
cout << ia[row][col]<< " ";
cout<< endl;
}
//版本3:指针int main() {
int ia[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
for (int (*p)[4] = ia; p != ia + 3; ++p)
for( int *q = *p; q != *p + 4; ++q)
//注意这个q,是指向一个整数,而p指向一个4元素的数组,*q = *p是q指向4元数组的首位cout<< *q <<" ";
cout<< endl;
}