最近在看c++ primer,在此开个贴记录一下自己的学习状况,也算是一种督促。希望能跟搜到此贴的小伙伴进行一些学习上的交流。
1.5.1节练习
练习1.20
http://www.informit.com/title/0321714113
3.4.1节练习
练习3.21 略
练习3.22
头文件和using声明是为了练习方便一直带着的,就直接贴上来了。
#include#include #include using std::string; using std::cin; using std::cout; using std::endl; using std::vector; int main() { string str1; vector str; while (cin >> str1) { if (str1 == "*") break; str.push_back(str1); } for (auto i = str.begin(); i != str.end() && !(*i).empty(); ++i) { for (int j = 0; j < (*i).size(); ++j) { (*i)[j] = toupper((*i)[j]); } cout << *i << endl; } return 0; }
练习3.23
#include#include #include using std::string; using std::cin; using std::cout; using std::endl; using std::vector; int main() { int num; vector num_set; while (cin >> num) { num_set.push_back(num); } for (auto it = num_set.begin(); it != num_set.end(); ++it ) { *it = 2 * (*it); } for (auto a : num_set) cout << a << endl; return 0; }
3.4.2节练习
练习3.24
相邻整数和
#include#include #include using std::string; using std::cin; using std::cout; using std::endl; using std::vector; int main() { int num; vector num_set; while (cin >> num) { num_set.push_back(num); } for (auto it = num_set.begin(); it < num_set.end()-1; ++it ) { *it = *it+(*(it+1)); cout << *it << endl; } return 0; }
首尾和
#include#include #include using std::string; using std::cin; using std::cout; using std::endl; using std::vector; int main() { int num; vector num_set; while(cin >> num) { num_set.push_back(num); } for (auto it = num_set.begin(), it1 = num_set.end(); it != it1; ++it) { --it1; cout << *it + *it1<< endl; } return 0; }
练习3.25
#include#include #include using std::string; using std::cin; using std::cout; using std::endl; using std::vector; int main() { vector scores(11,0); unsigned grade; while (cin >> grade) { auto it = scores.begin(); *(it + grade/10) = *(it + grade/10) + 1; } for (auto a : scores) cout << a << endl; return 0;
练习3.26
end - beg 返回的是两个迭代器之间的距离,迭代器与迭代器之间不支持加法。



