《c++ primer, 5E》
第91页到第94页,笔记:
1、vector支持的操作。
v.empty()、v.size()、v.push_back(t)、v[n]
2、试图通过下标访问不存在vector元素不会被编译器发现,
而是在运行时产生不可预知的值。
3、确保下标合法的有效手段:尽可能使用范围for
4、vector的小结:vector的初始化、vector支持的操作、vector的遍历与随机访问
遇到的问题:
课后练习:
练习3.16
正确。
并且验证 (10, "hi")和{10 , "hi"}等效,
而{10} 和(10)的效果取决vector元素的类型。
练习3.17
#include<iostream> using std::cin; using std::cout; using std::endl; #include<vector> using std::vector; #include<string> using std::string; int main() { string word; vector<string> svec; while(cin >> word){ svec.push_back(word); } for(auto &word: svec){ for(auto &ch: word){ ch = toupper(ch); } cout << word << endl; } return 0; }
练习3.18
不合法。非法访问。 改为 ivec.push_back(42);
练习3.19
反正最好的是 vector<int> v(10 , 42);
练习3.20
1
#include<iostream> using std::cin; using std::cout; using std::endl; #include<vector> using std::vector; #include<string> using std::string; int main() { int temp; vector<int> v; while(cin >> temp){ v.push_back(temp); } //随机访问 for(decltype(v.size()) index = 0; index != v.size()-1; ++index) cout << v[index]+ v[index+1] << endl; return 0; }
2
#include<iostream> using std::cin; using std::cout; using std::endl; #include<vector> using std::vector; #include<string> using std::string; int main() { int temp; vector<int> v; while(cin >> temp){ v.push_back(temp); } //随机访问 decltype(v.size()) head = 0; auto tail = v.size()-1; for(; head <= tail; ++head, --tail){ cout << v[head]+v[tail] << endl; } return 0; }