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
------分隔线----------------------------
------分隔线----------------------------