通过字符串的字符对整数数组进行索引

Indexing of integer array through characters of a string

本文关键字:数组 索引 整数 字符串 字符      更新时间:2023-10-16

我在动态编程上遇到问题。问题是从给定的字符串打印不同的子序列。所以我遇到了一些对我所不知道的东西。在该整数数组的代码元素中,通过字符串的字符(实际上是INT类型的向量(访问。因此,我尝试在新代码中做同样的事情。它给了我一些输出。但是我不明白。

我在PC上尝试了此代码,但无法理解输出。我想知道输出背后的逻辑,并想知道是否可以通过字符串字符的字符进行索引。

#include<bits/stdc++.h>
using  namespace std;
int main(){
     string s;
     cin>>s;
     int* last = new int[1000];
      for(int i=0;i<s.length();i++){
        cout<<last[s[i]];
     }    
}

当我输入其中的东西时,可以说" abcdefgh"会给我" 00000000"。为什么这是什么?我不知道预期输出。

让我向您解释一下。

,但首先,一些建议。如果您确实编写真实的代码,而不是为了竞争性编程,请不要使用

#include<bits/stdc++.h>
using  namespace std;

所以,现在以基本理解。字符串由您的角色或字母组成。计算机在内存中无法存储字母。它确实只知道位和字节。所以,数字。

有一个代码与哪个字符关联。其中之一是ASCII

因此,如果计算机将这些数字发送到输出或打印设备,这些数字将转换为一些可理解的字母。

实际上,字符串是数字。只是为您包裹好。并且,字符串具有索引运算符[]。如果您说S [0],那么它将给您第一个字符,一个数字。您可以通过将字符值投放到整数来检查一下。只需尝试std::cout << static_cast<int>(s[0]);即可。您会看到一个数字。

现在您知道S [i]会给您一个数字。然后,您将拥有一系列INT的:"最后"。然后您使用索引操作员[k]获取k'th元素。

如果您写上一个[s [i]],则首先评估内部值:s [i]。让我们假设这是字符" a",等于数字65。这结果要持续[65],您将阅读最后的第66个元素。

已经很重要。

现在到达阵列。(顺便说一句,切勿使用"阵列"或"新"(。

int* last = new int[1000];

" new"将在堆上分配一个连续的内存区域(如今,计算机系统4000字节(,因此在内存中某人。这样做的地方是我们无法控制的。这些值将具有一些(randdom(内容。内存区域未初始化。(在我看来,这是错误的,我们避免初始化所有东西(。

在您的情况下,其中有很多0,但有时也有其他。

现在,如果您立即输入字符串" Hello",则相当于数字72、101、108、108、111。因此,您将显示第72,101、101、108、108、108和111 Integer值整数阵列的最后。

hopy这使事情变得清晰。