网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月21日
漏签
0
天
c语言吧
关注:
798,699
贴子:
4,347,005
看贴
图片
吧主推荐
视频
游戏
10
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
大神求助
只看楼主
收藏
回复
男女瘦瘦不卿
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这是一个删除字符串中重复的字符代码,作为小白,看不懂第10行是什么意思,请各位大神们指点一下,谢谢了
aaaaaaa421
马猴烧酒
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
首先给你一个概念:C++ 中有一个名为 map 的数据结构,它负责存储一定数量的键-值对,并负责从键到值的单向映射,如 map['1']++ 表示查询 '1' 这个键所对应的值并自增, map[str[1]] = 3 表示从 str 这个数组中取出第一个元素作为键去查询对应的值,并赋值为 3。你图中的代码也是类似的道理:键是输入的字符,值是字符出现的次数。
gpx123
异能力者
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
array[tmp[j]]=0意味着tmp[j]是第一次出现,就要保存tmp【j】
aaaaaaa421
马猴烧酒
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这样吧,给你讲一下我理解这个函数的过程,可能可以帮到你:首先看到第一行初始化了一个数组,忽略;第二行初始化了字符串指针,忽略;第三行看到循环变量是 j,范围为 [0, len),根据传入的参数,猜测是针对 instr 进行遍历,于是在循环内寻找是否有 instr[j] 或等价的表达式,能找到,证实了猜测,然后可以赋予 tmp[j] 为当前字符的意义;循环内有一个判断条件,条件意义暂时不明,但影响只有向 outstr 追加一个字符,暂时忽略;循环里还剩下一行,即 array[当前字符]++,套用学过的逻辑,可以发现这是键值对模型,键为一个字符,值的意义暂时不明。根据 array 中所有元素初值为 0,且每次循环都自增当前字符所对应的元素,可以判断 array 负责统计每个字符在字符串遍历到某个位置时已经出现的次数(这里如果不理解,可以自己手动推演一遍),即键所对应的值的意义为键(即当前字符)出现的次数。这样一来,整个 if 就很好理解了:如果当前字符出现的次数为 0(之前没有重复的字符),那么追加字符,否则不追加。最后一行为 outstr 追加了终止标记。
gpx123
异能力者
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
Kn1ght
异能力者
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
char是取值范围-128到127的int 只不过只占1字节 输入什么ABCD 和直接输入对应的ASCII码一样
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示