#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include<vector>
int main()
{
int iarray[] = { 1,2,3,4,5 };
std::vector<int> v1(iarray, iarray + 5);
std::vector<int>::iterator it;
//初始代iterator
it = v1.begin();
//iterator 是一个类中类 也是一个类型 这里有重载++
for (; it != v1.end(); it++)
{
//重载了*符号
std::cout << *it << " " ;
}
std::cout << std::endl;
it = v1.begin()+2;
//这里直接报错 是应为在指定位置插入数据 实际就是 重新在堆区申请了一块区域 而iterator指针没有更新 还指向已delete的区域
//v1.insert(it, 10);
//std::cout << *it << std::endl;
//而insert返回值 是一个指向新申请区域的iterator对像
it = v1.insert(it, 10);
std::cout << *it << std::endl;
//同样 删除数据也会有同样的问题
v1.clear();
v1 = { 1,2,3,3,3,3,3,4,5,6,7,8,9 };
for (it = v1.begin(); it != v1.end(); )
{
if (*it == 3)
{
it=v1.erase(it);
}
else
{
it++;
}
}
for (it = v1.begin(); it != v1.end(); it++)
{
//重载了*符号
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}