容器

容器的初始化和遍历:

#include<iostream>
using namespace std;
#include "vector"
void printV(vector<int> &v)
{
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
}
void main33() //数组形式的遍历赋值
{
//vector遍历
vector<int> v1(10);   //提前把内存准备好
// vector<int> v1;   //这种方法下面遍历出错
for (int i = 0; i < 10; i++)
{
v1[i] = i + 1;    //用这种方法,必须在定义的时候说是10个元素
}
printV(v1);
printf("\n");
}
void main34()
{
vector<int> v1(10);
printf("vector<int> v1(10)容器的大小为:%d\n",v1.size());
v1.push_back(100);
v1.push_back(200);
printV(v1);
printf("\n");
}
void main35()//迭代器形式的赋值和遍历

//vector遍历
vector<int> v1;   //提前把内存准备好 里面没有任何东西也没分配内存
   v1.push_back(100);
v1.push_back(200);
vector<int> :: iterator  it;
     int i=0;
// vector<int> v1;   //这种方法下面遍历出错
for (it = v1.begin(); it!=v1.end(); it++,i++)
{
*it=i+1;    
}
printV(v1);
printf("\n");
}
void main36() //数组形式的遍历赋值
{
//vector遍历
vector<int> v1 ;   //提前把内存准备好
int j=0;
printf("压入元素前vector<int> v1容器的大小为%d\n",v1.size());
v1.push_back(100),j++;
v1.push_back(200),j++;
v1.push_back(300),j++;
printf("压入%d元素后,vector<int> v1容器的大小为%d\n",j,v1.size());
// vector<int> v1;   //这种方法下面遍历出错
for (int i = 0; i < v1.size(); i++)
{
v1[i] = i + 1;    //用这种方法,这时候不是必须分配10个内存了 只要分配空容器后然后压进去元素压进去一个时候会给容器分配相应的内存空间
}
printV(v1);
printf("\n");
}


void main()
{  main33();
main34();
main35();
main36();
return;
}
/*
main33结果是:1 2 3 4 5 6 7 8 9 10
vector<int> v1(10)容器的大小为:10
main34结果是:0 0 0 0 0 0 0 0 0 0 100 200  12个元素了
main35结果是:1 2
压入元素前vector<int> v1容器的大小为0
压入3元素后,vector<int> v1容器的大小为3
main36结果是:1 2 3


vector<int> v1 ;  //只声明了个空容器还没有为容器分配内存次数不能直接用数组的形式赋值或修改或访问,此时容器长度为0
//只有在push_back压入元素的时候才分配内存的,此事可以直接用数组的形式赋值或修改或访问。但长度是压入元素的个数
vector<int> v1(10) ; //分配了10个内存的容器,此时容器长度为10可以直接用数组的形式赋值或修改或访问.

总结:以vector<int> v1(10);指定长度定义的容器一般就以数组的形式操作  如果没有指定长度定义的数组则用函数和迭代器的形式操作  push_back函数压入

*/


vector<int>::iterator it = v1.begin(); //v1.begin();和迭代器一样都是指针。


2、擦除函数erase

#include<iostream>
using namespace std;
#include "vector"
void printV(vector<int> &v)
{
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
}
/*
main36结果是:4 5 6 7 8 9 10 (区间删除)
                5 6 7 8 9 10(指定位置删除)
 2 2 3 2 5 6 7 8 9 10(根据元素的值)
 3 5 6 7 8 9 10
 100 3 5 6 7 8 9 10 200(vector的插入)
*/
//vector删除
void main36()
{
vector<int> v1(10);
for (int i = 0; i < 10; i++)
{
v1[i] = i + 1;   
}
//区间删除
v1.erase(v1.begin(), v1.begin() + 3);  //删除前三个元素
//指定位置删除
    v1.erase(v1.begin());
//根据元素的值
v1[0] = 2;
v1[3] = 2;
printV(v1);
cout << endl;
for (vector<int>::iterator it = v1.begin(); it != v1.end();)
{
if (*it ==2)
{
// it=v1.erase(it);   //当删除迭代器所指向的元素的时候,erase删除函数会让it自动移动;   必须加左值it
v1.erase(it); //不加it也行
}
else
{
it++;
}
}
printV(v1);
cout << endl;
//vector的插入
v1.insert(v1.begin(), 100);
v1.insert(v1.end(), 200);
printV(v1);
}


void main()
{
main36();
return;
}


//实际运行结果
/*2 6 7 2 9 10
6 7 9 10
100 6 7 9 10 200 Press any key to continue
*/
/*


总结:erase擦除函数真的把元素彻底擦除了且杀掉一个元素后面元素会自动往前移动 容器长度会减1
v1.begin()指向头元素之前 v1.end()指向尾元素之后

1、vector是将元素置于一个动态数组中加以管理的容器。

2、vector可以随机存取元素。

3、vector尾部添加或移除元素非常快速,但是在中部或头部插入或移除元素比较费时。(因为假如把原来的3号元素删除后,后面大量的元素一个一个往前移)





*/
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值