#include<iostream>
using namespace std;
#include"vector" //vector的头文件
//vector的插入 获取头部尾部元素 删除尾部元素 等操作
void main31()
{
//定义一个int类型的vector容器
vector<int> a;
//插入数据
a.push_back(1);
a.push_back(2);
a.push_back(3);
//获取a的长度
cout << "a的长度:" << a.size() << endl;
//获取头部元素
cout << "a的头部元素:" << a.front() << endl;
//获取a的长度
cout << "a的长度:" << a.size() << endl;
//修改vector的头部元素以及尾部元素的值
//函数返回值当左值必须返回一个引用
a.front() = 10;
a.back() = 23;
//不断地获取尾部元素,并且将尾部元素删除
while (a.size()>0)
{
cout << "a的尾部元素:" << a.back() << endl;
a.pop_back(); //默认删除最后一个元素
}
}
//vector的初始化
void main32()
{
//利用默认的构造函数的初始化
vector<int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) //迭代器方式的输出
{
cout << *it << " ";
}
//利用vector中的拷贝构造函数
vector<int> b = a;
vector<int> c(a.begin(), a.begin() + 2);
}
//vector 的遍历
void main33()
{
//按照数组的形式进行遍历
vector<int> a(10); //使用数组形式插入以及遍历的时候一定要注意,如果选定十个元素,则必须要先设定十个元素的内存空间,否则就会出现中断
for (int i = 0; i < 10; i++)
{
a[i] = i; //vector作为左值
}
for (int i = 0; i < 10; i++)
{
cout << a[i] << " "; //vector作为右值
}
}
//关于数组形式赋值和push_back()方式的一些总结
void main34()
{
vector<int> a(10);
cout << "a的长度:"<<a.size() << endl;
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) //迭代器方式的输出
{
cout << *it << " ";
}
cout << endl;
a.push_back(10);
a.push_back(20);
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) //迭代器方式的输出
{
cout << *it << " ";
}
cout << endl;
cout << "a的长度:" << a.size() << endl;
/*总结*/
//通过对比发现 按照数据的形式会预先分配一段内存,然后默认初始化全部为0 然后就是赋值替换
//而push_back 会自动的增加一段内存,然后在赋值,从长度的变化就可以发现
}
//vector 迭代器的遍历
/*迭代器的总结*/
//1 iterator====>正向迭代器 正向遍历中 begin() 指向容器的首个元素, end() 指向容器最后一个元素的后面一个内存 当 it = a.end() 的时候就已经代表遍历完毕
//2 reverse_iterator====> 逆向迭代器 逆向遍历中 rbegin() 指向容器的最后一个元素, rend() 指向容器第一个元素的前面一个内存 当 it = a.rend() 的时候就已经代表遍历完毕
void main35()
{
vector<int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);
a.push_back(4);
cout << "a的长度:" << a.size() << endl;
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) //正向迭代器方式的输出
{
cout << *it << " ";
}
cout << endl;
for (vector<int>::reverse_iterator it = a.rbegin(); it != a.rend(); it++) //逆向迭代器方式的输出
{
cout << *it << " ";
}
}
//vector 的删除操作
void main36()
{
vector<int> a(10); //使用数组形式插入以及遍历的时候一定要注意,如果选定十个元素,则必须要先设定十个元素的内存空间,否则就会出现中断
for (int i = 0; i < 10; i++)
{
a[i] = i; //vector作为左值
}
cout << "初始化的vector" << endl;
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) //正向迭代器方式的输出
{
cout << *it << " ";
}
cout << endl;
//vector的区间删除
a.erase(a.begin(), a.begin() + 3); //这是指定删除第0-3之间的元素
cout << "区间删除的vector" << endl;
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) //正向迭代器方式的输出
{
cout << *it << " ";
}
cout << endl;
//vector 指定位置删除
a.erase(a.begin()); //删除第一个元素
cout << "指定位置删除的vector" << endl;
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) //正向迭代器方式的输出
{
cout << *it << " ";
}
cout << endl;
//vector 指定元素删除 案例 ,将5全部删除
a[0] = 5;
a[1] = 5;
cout << "初始化的vector" << endl;
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) //正向迭代器方式的输出
{
cout << *it << " ";
}
cout << endl;
cout << "指定元素删除vector" << endl;
for (vector<int>::iterator it = a.begin(); it != a.end();)
{
if (*it == 5)
{
it = a.erase(it); //这里for循环最后不加上it++ 是因为在删除这一位置之后,it会自动++,然后将这个值赋给新的it
}
else
{
it++;
}
}
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) //正向迭代器方式的输出
{
cout << *it << " ";
}
cout << endl;
}
int main()
{
// main31();//vector的插入 获取头部尾部元素 删除尾部元素 等操作
//main32(); //vector的初始化
//main33(); //vector 的遍历
//main34(); //关于数组形式赋值和push_back()方式的一些总结
//main35(); //vector 迭代器的遍历
main36(); //vector 的删除操作
system("pause");
}
C++ 有关STL中容器vector的操作 初始化 遍历 删除
最新推荐文章于 2023-12-26 16:35:04 发布