社区
C++ 语言
帖子详情
关于容器的问题
秋天的晨阳
2012-10-11 03:43:04
例如vit是指向ivec.begin()的迭代器
那么
vit=ivec.erase(vit);//删除元素
--vit;//指向删除元素的前一元素
我理解的是用erase删除元素后返回的迭代器指向的应该还是ivec.begin()
使用--vit后 ivec.begin()的前一个元素是什么?
...全文
95
7
打赏
收藏
关于容器的问题
例如vit是指向ivec.begin()的迭代器 那么 vit=ivec.erase(vit);//删除元素 --vit;//指向删除元素的前一元素 我理解的是用erase删除元素后返回的迭代器指向的应该还是ivec.begin() 使用--vit后 ivec.begin()的前一个元素是什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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()的前一个,是越界了嘛。
关于docker
容器
中socket配置端口
问题
关于docker
容器
中socket配置端口
问题
关于
容器
端口和主机端口的关系Socket端口配置关于0.0.0.0和127.0.0.1和其他ip的关系 关于
容器
端口和主机端口的关系 首先,我们在创造
容器
时,如果不指定端口映射,那么这个
容器
时...
关于Docker中
容器
之间互相访问
问题
因为
容器
中的ip地址 和 宿主机的ip地址 是不同的,所以当 nacos 用 localhost 时,其实对应的是 nacos
容器
的ip地址,所以调用 localhost 时,并不能通过 宿主机的ip地址调用3306端口映射到
容器
中3306端口调用mysql...
docker
容器
迁移
问题
将docker
容器
打包好,迁移到另外的服务器,很方便。对于网站的迁移,不用配置任何多余的环境。那么一般的步骤是什么呢? 之前搞了好久,
容器
迁移之后不能正常运行。 原因是我使用了export/import的形式,
容器
不能...
Spring 中的父子
容器
你了解吗?
在 SSM 项目中,Spring
容器
是父
容器
,SpringMVC 是子
容器
,子
容器
可以访问父
容器
的 Bean,...那么现在
问题
来了:既然单纯一个 SpringMVC
容器
就能使项目跑起来,那我们为什么还要用父子
容器
?父子
容器
的优势是什么?
docker
容器
时区不对
问题
默认
容器
为UTC零时区时间, 比中国时间...有两种方式可以修改
容器
的时区
问题
: 第一种是
容器
还未启动,在启动
容器
时通过挂载的方式可以设置时区与宿主机相同, 第二种是
容器
已经启动后, 找补的方式; 第一种 挂载 .
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章