1. vector基本操作简介
学习这些东西1定要学会利用自己已的东西来推行到未知的知识了解。所以我们可以利用上1节的string知识来学习vector.由于string本质上就是1个容器,只不过这个容器只能寄存字符而已。而vector这是1个更大范围的容器,它基本上可以看作成包罗万象的容器!
访问vector对象
使用range for语句来取得,同string字符串1样
- for(auto i : vec)
- for(auto &i : vec)
empty & size
同string以的使用方法1样
- empty(函数是判断vector是不是为空)
- size(是求vector元素的个数)
- vetctor<int> :: size_type
- vector<string> :: size_type
元素比较
同string以的使用方法1样
- 相同位置上元素相同,则比较其容量大小
- 位置上元素不同,则比较第1对不同元素的大小来定
- 注意如果有些类型没有定义比较的运算符的时候是没法比较的
- 注意类型之间是不是存在可以比较性
2. vector对象的索引
索引的下标的定义同string类型1样
- 下标的类型为size_type
- 常量vector法使用下标获得
- 特别要注意小标的范围
不能使用下标来添加元素
- 使用下标运算符只能用来访问已存在的元素;
- 而且使用下标运算符的时候特别要注意其使用的范围
- 尽可能使用range for语句来访问下标
实例练习:
- 访问并求平方数
- 访问并修改词为大写
- 尝试比较1下两个不同类型的元素
- 尝试设计1个常量的vector,看看能否使用索引来获得
- 书中实例统计分数
- 实例下标添加元素
- 练习3.20 使用下标顺次输出首尾两个数
#pragma region range for 求平方数 //关键是掌握范围 for 来访问vector元素 //要理解援用操作符的作用 vector<int> ivec{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; for (auto &i : ivec) { i *= i; } for (auto i : ivec) { cout << i << endl; }#pragma endregion #pragma region 访问并修改string为大写 vector<string> svec{ "i", "am", "wall-e" }; for (auto &s : svec) { for (auto &c : s) { if (isalpha(c)) { c = toupper(c); } } } for (auto s : svec) { cout << s << endl; }#pragma endregion#pragma region 尝试比较1下两个不同类型的元素 //if (ivec > svec); //err 没法比较两个不同的类型 vector<int> ivec2{ 1, 2, 3, 4, 5, 6 }; if (ivec > ivec2) { cout << "ivec > ivec2" << endl; } #pragma endregion#pragma region 尝试设计1个常量的vector,看看能否使用索引来获得 const vector< int> ivec3{ 1, 2, 3, 4, 5, 6 }; for (decltype(ivec3.size()) i = 0; i < ivec3.size(); i++) { int a = ivec3[i]; //可以访问,但是没法修改 }#pragma endregion#pragma region 实例统计分数 //vector< int> score(11,0); //unsigned input = 0; //unsigned index = 0; //while (cin >> input) //{ // if (input < 100) // { // score[input / 10]++; // } // index++; // if (index == 10) // { // break; // } //} //for (auto i : score) //{ // cout << i << ","; //} //cout << endl;#pragma endregion#pragma region 实例下标添加元素 vector< int> addIndex; //addIndex[1] = 0; //err 没法使用下标来添加元素 #pragma endregion #pragma region 练习3.20 使用下标顺次输出首尾两个数实例下标添加元素 for (decltype(ivec.size()) i = 0; i < ivec.size()/2; i++) { cout << ivec[i] << "," ; cout << ivec[ivec.size() - i-1] << ","; }#pragma endregion
------分隔线----------------------------
------分隔线----------------------------