C++__vector容器的遍历
#include <vector> // 使用vector容器时,需要引入头文件。
//1、通过无参构造,构造一个空的vector容器。
vector<int> v;
//2、添加若干个元素。
v.push_back(1);
v.push_back(2);
v.push_back(3);
//3.迭代器(iterator):使用普通指针,依次指向vector中的每一个元素。、
/*
begin(): 获取到的是vector容器中的首元素的地址。
end(): 获取到的是vector容器中的最后一位元素的下一位的指针。
需要注意的是,end()函数返回的迭代器指向的位置是一个不存在的元素,因此不应该对其进行解引用操作。
如果要访问最后一个元素,应该使用vector容器的back()函数来获取。
*/
vector<int>::iterator it = v.begin(); // 注意,迭代器获取的是地址。
cout << "v[0]=" << *it << endl; // v[0]=1
*it++;
cout << "v[1]=" << *it << endl; // v[1]=2
*it++;
cout << "v[2]=" << *it << endl; // v[2]=3
//*it++;
//cout << "v[3]=" << *it << endl; // 越界,无法输出结果。
//使用迭代器,遍历vector容器。(可缩写)
int i = 0;
for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
cout << "v[" << i++ << "]" << "=" << *it << endl; // 直接输出指针指向的元素。
/*
v[0]=1
` v[1]=2
v[2]=3
*/
}
//通过指针,修改元素。
cout << endl;
i = 0;
for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
//通过指针,修改元素。
if (1 == *it) {
*it = 10;
}
cout << "v[" << i++ << "]" << "=" << *it << endl;
/*
v[0]=10 // 值已被修改。
v[1]=2
v[2]=3
*/
}
// 缩写迭代器遍历;(只能正序遍历)
cout << endl;
i = 0;
// 依次将v容器中的每一个元素,给ele进行赋值;
for (int& ele : v) { //注意,加入& 后才可为ele进行赋值。
if (2 == ele) {
ele = 20;
}
cout << "v[" << i++ << "]" << "=" << ele << endl;
/*
v[0] = 10
v[1] = 20
v[2] = 3
*/
}
//倒序遍历容器。
cout << endl;
i = 2;
for (vector<int>::iterator it = v.end(); it != v.begin();) {
it--; // 注意:v.end()指向尾元素的下一位,需要指针先向上移动一位才是尾元素的地址。
cout << "v[" << i-- << "]=" << *it << endl;
/*
v[2]=3
v[1]=20
v[0]=10
*/
}