Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在使用字符索引数组时会出现这种不同的行为? 我试图编写一个C++程序来查找第一个非重复字符,如果所有字符重复,它将返回-1。_C++_Arrays_String_Dictionary - Fatal编程技术网

为什么在使用字符索引数组时会出现这种不同的行为? 我试图编写一个C++程序来查找第一个非重复字符,如果所有字符重复,它将返回-1。

为什么在使用字符索引数组时会出现这种不同的行为? 我试图编写一个C++程序来查找第一个非重复字符,如果所有字符重复,它将返回-1。,c++,arrays,string,dictionary,C++,Arrays,String,Dictionary,我设计了一个解决方案,使用整数数组跟踪字符的计数,我使用必须存储其计数的相应字符对其进行索引 方案1: 给出错误的输出。。。 这里的一个重要问题是这一行: memset(&map,0,256); 这里只对前256/sizeof(int)进行归零。如果sizeof(int)为4,则表示第一个64 int。 但是,您的程序正在使用索引大于97的元素,因此出现了问题。 因此应该是这样 memset(&map,0,256*sizeof(int)); 或者也可以简单地写为 memse

我设计了一个解决方案,使用整数数组跟踪字符的计数,我使用必须存储其计数的相应字符对其进行索引

方案1: 给出错误的输出。。。


这里的一个重要问题是这一行:

memset(&map,0,256);
这里只对前256/sizeof(int)进行归零。如果sizeof(int)为4,则表示第一个64 int。 但是,您的程序正在使用索引大于97的元素,因此出现了问题。 因此应该是这样

memset(&map,0,256*sizeof(int));
或者也可以简单地写为

memset(map,0,sizeof(map));

记住:memset的第三个参数是“要填充的字节数”,而不是“数组的元素数”

这里的一个重要问题是这一行:

memset(&map,0,256);
这里只对前256/sizeof(int)进行归零。如果sizeof(int)为4,则表示第一个64 int。 但是,您的程序正在使用索引大于97的元素,因此出现了问题。 因此应该是这样

memset(&map,0,256*sizeof(int));
或者也可以简单地写为

memset(map,0,sizeof(map));

请记住:memset的第三个参数是“要填充的字节数”,而不是“数组的元素数”

寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。以第二次实现的形式明确给出了所需的行为。我所需要的只是一个解释…@Pavithranravichandrian,你不能期望人们点击他们从未听说过的网站的链接,也不能期望链接无限期地保持有效,也不能期望谷歌能够在大量问题被隐藏的情况下引导其他有同样问题的人去解决这个问题。除此之外,还有它的规则,在使用网站时遵守这些规则是有礼貌的。现在已正确编辑。会对我仁慈吗?@Pavithranravichandrian:是的,仁慈是对你的:)寻求调试帮助的问题(“为什么这个代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。以第二次实现的形式明确给出了所需的行为。我所需要的只是一个解释…@Pavithranravichandrian,你不能期望人们点击他们从未听说过的网站的链接,也不能期望链接无限期地保持有效,也不能期望谷歌能够在大量问题被隐藏的情况下引导其他有同样问题的人去解决这个问题。除此之外,还有它的规则,在使用网站时遵守这些规则是有礼貌的。现在已正确编辑。会对我施以怜悯吗?@Pavithranravichandrian:是的,怜悯是对你的:)第二个例子应该是
memset(&map,0256*sizeof(int))
as
sizeof(int)
不保证为4。@user1937198:谢谢你的评论,我更正了第二个例子应该是
memset(&map,0256*sizeof(int))作为
sizeof(int)
不保证为4。@用户1937198:谢谢你的评论,我更正了它