社区
C++ 语言
帖子详情
关于容器的问题
秋天的晨阳
2012-10-11 03:43:04
例如vit是指向ivec.begin()的迭代器
那么
vit=ivec.erase(vit);//删除元素
--vit;//指向删除元素的前一元素
我理解的是用erase删除元素后返回的迭代器指向的应该还是ivec.begin()
使用--vit后 ivec.begin()的前一个元素是什么?
...全文
104
7
打赏
收藏
关于容器的问题
例如vit是指向ivec.begin()的迭代器 那么 vit=ivec.erase(vit);//删除元素 --vit;//指向删除元素的前一元素 我理解的是用erase删除元素后返回的迭代器指向的应该还是ivec.begin() 使用--vit后 ivec.begin()的前一个元素是什么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
漫步者、
2012-10-12
打赏
举报
回复
cout<<"--iter="<<*iter<<endl
你去操作了一个受保护的内存地址
若风09
2012-10-12
打赏
举报
回复
begin()函数返回一个指向当前vector起始元素的迭代器.而erase函数的返回值是指向删除的元素的下一位置的迭代器.也就是说
vit = ivec.begin();
vit=ivec.erase(vit);//删除元素,此时vit是ivec第二个位置的迭代器
--vit;//此处确实越界了,但是我刚才网上查了下好像标准库中,vector本来就没有设计越界检查 ,所以这里没有报错,但是当你 cout的时候就会发现其实找不到这个元素,就报错了 ;应该是这样理解
秋天的晨阳
2012-10-11
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
如果是输入要删除的是第一个时。就会出现错误。
你可以自己设置断点调试一下。
[/Quote]
我试了不会出错除非我将
// cout<<"--iter="<<*iter<<endl;
的//去掉 才会出错
我就是想知道为什么
l0g1n
2012-10-11
打赏
举报
回复
如果是输入要删除的是第一个时。就会出现错误。
你可以自己设置断点调试一下。
l0g1n
2012-10-11
打赏
举报
回复
执行这句后iter=lis.erase(iter);
iter指针所指向的位置是不发生变化的,只是list中后面的数据依次前移。
如序列为
a b c d e f g
当输入删除c后,序列为
a b d e f g
iter指向d。
执行--iter后,iter指向b。
秋天的晨阳
2012-10-11
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
你可以看做数组或者链表,采取删除操作时向首部靠近,begin()的前一个,是越界了嘛。
[/Quote]
#include<iostream>
#include<list>
#include<string>
using namespace std;
int main()
{
//将list对象读入元素
string str;
list<string> lis;
while(cin>>str)
lis.push_back(str);
cin.clear();//将输入流置于有效状态
//输入要查找的值
cout<<"请输入"<<endl;
cin>>str;
//处理list对象,删除与str相同的元素
for(list<string>::iterator iter=lis.begin();
iter!=lis.end();++iter)
{
if(*iter==str)
{
iter=lis.erase(iter);
cout<<*iter<<endl;
--iter;
// cout<<"--iter="<<*iter<<endl;
}
}
return 0;
}
为什么越界了不显示错误啊
漫步者、
2012-10-11
打赏
举报
回复
你可以看做数组或者链表,采取删除操作时向首部靠近,begin()的前一个,是越界了嘛。
boot spring 没有父子
容器
_Spring父子
容器
问题
问题
描述如果使用传统的方式来开发Spring项目,要部署在Tomcat上面,一般会依赖Spring与Spring MVC,在Tomcat的web.xml中会配置一个加载service的配置文件,这个在Tomcat启动的时候会进行加载,会生成一个Spring的...
docker
容器
迁移
问题
将docker
容器
打包好,迁移到另外的服务器,很方便。对于网站的迁移,不用配置任何多余的环境。那么一般的步骤是什么呢? 之前搞了好久,
容器
迁移之后不能正常运行。 原因是我使用了export/import的形式,
容器
不能...
Kubernetes区分Pause
容器
和Init
容器
Kubernetes区分Pause
容器
和Init
容器
Spring 中的父子
容器
你了解吗?
在 SSM 项目中,Spring
容器
是父
容器
,SpringMVC 是子
容器
,子
容器
可以访问父
容器
的 Bean,...那么现在
问题
来了:既然单纯一个 SpringMVC
容器
就能使项目跑起来,那我们为什么还要用父子
容器
?父子
容器
的优势是什么?
C++
容器
STL相关面试
问题
容器
:数据结构,用来存放数据 算法:常用算法 迭代器:
容器
和算法之间的胶合剂,“范型指针” 仿函数:一种重载了operator()的类,使得这个类的使用看上去像函数 配置器:为
容器
分配并管理内存 适配器:修改其他...
C++ 语言
65,198
社区成员
250,522
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章