1. vector基本操作简介
学习这些东西一定要学会利用自己已经的东西来推广到未知的知识了解。所以我们可以利用上一节的string知识来学习vector.因为string本质上就是一个容器,只不过这个容器只能存放字符而已。而vector这是一个更大范围的容器,它基本上可以看做成无所不包的容器!
访问vector对象
使用range for语句来获得,同string字符串一样
- for(auto i : vec)
- for(auto &i : vec)
empty & size
同string以的使用方法一样
- empty(函数是判断vector是否为空)
- size(是求vector元素的个数)
- vetctor<int> :: size_type
- vector<string> :: size_type
元素比较
同string以的使用方法一样
- 相同位置上元素相同,则比较其容量大小
- 位置上元素不同,则比较第一对不同元素的大小来定
- 注意如果有些类型没有定义比较的运算符的时候是无法比较的
- 注意类型之间是否存在可以比较性
2. vector对象的索引
索引的下标的定义同string类型一样
- 下标的类型为size_type
- 常量vector法使用下标获取
- 尤其要注意小标的范围
- 下标的类型为size_type
- 常量vector法使用下标获取
- 尤其要注意小标的范围
不能使用下标来添加元素
- 使用下标运算符只能用来访问已经存在的元素;
- 而且使用下标运算符的时候尤其要注意其使用的范围
- 尽量使用range for语句来访问下标
实例练习:
- 访问并求平方数
- 访问并修改词为大写
- 尝试比较一下两个不同类型的元素
- 尝试设计一个常量的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 尝试比较一下两个不同类型的元素
//if (ivec > svec); //err 无法比较两个不同的类型
vector<int> ivec2{ 1, 2, 3, 4, 5, 6 };
if (ivec > ivec2)
{
cout << "ivec > ivec2" << endl;
}
#pragma endregion
#pragma region 尝试设计一个常量的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