为什么我们在访问指向字符串的指针数组中的每个字符串*中的每个字符时有一个三维数组
Why do we have a three dimensional array when accessing each character in each string* in an array of pointers to strings?
我正在查看去年过去的家庭作业,但我从来没有弄清楚为什么这适用于检查数组中的每个字符串是否都是回文(单词向后拼写是同一个单词 - "赛车"(:
for (int k = 0; k < numElems; k++){
pStatus = true;
lastLetter = (*ptrArray[k]).length() - 1;
for (int i = 0; i <= (lastLetter / 2); i++){
if (ptrArray[k][0][i] != ptrArray[k][0][lastLetter - i])
pStatus = false;
}
if (pStatus == true){
//...
}
}
如果我没记错的话,我通过反复试验编写了这段代码,当时二维会给我奇怪的结果。我只是弄乱了代码,并在对它不起作用感到沮丧后尝试了奇怪的事情。
因此,要访问数组中每个字符串中的每个独立字符,我需要编写ptrArray[k][0][lastLetter - i]
而不是ptrArray[k][lastLetter - i]
。 这是为什么呢?
编辑:
你们中的一些人想要更多的代码,我想我忽略了ptrArray是指向字符串的指针指针的事实(我记得在这个作业中我们必须使用指向指针数组的指针(。这就是我们需要介绍[0]
的原因吗?下面是函数的原型:
void checkIfPalindrome(string **ptrArray, int numElems);
我动态分配了指针数组。
string **ptrArray;
ptrArray = new string*[numElems];
您的类型是 string**
。 string
本身是一个数组类型,所以我们实际上有一个三维数组。 ptrArray[k]
访问指向string
的指针,ptrArray[k][0]
访问string
(实际上等同于*(ptrArray[k])
(,ptrArray[k][0][i]
访问地址ptrArray[k]
中指针指向的数组"第一个"字符串中的第 i
个字符。
我将对您的代码做出一些假设,因为所有使用的变量都不在范围内。让我们尝试用伪代码编写算法。
strings = [ "str1", "str2",... ]
for each s in strings:
is_palindrome = true
last_index = s.length - 1
for i in [0, last_index]:
if s.charAt(i) != s.charAt(last_index - i)
is_palindrome = false
if is_palindrome == true:
#...
您实际上只在算法中使用了两个维度,因为您始终访问第二个维度中的第 0 个元素。因此,我们可以像
std::vector<std::string> ptrArray = ...;
int numElems = ptrArray.length();
for (int k = 0; k < numElems; k++){
pStatus = true;
lastLetter = ptrArray[k].length() - 1;
for (int i = 0; i <= (lastLetter / 2); i++){
if (ptrArray[k][i] != ptrArray[k][lastLetter - i]) {
pStatus = false;
}
}
if (pStatus == true){
//...
}
}
其中ptrArray
是字符串的数组ptrArray[i]
是第 i 个字符串,ptrArray[i][j]
是第 i 个字符串的第 j 个字符。
相关文章:
- 使用 jsoncpp 解析 json 数组字符串
- C++ 对象数组字符串输入在控制台上不起作用
- 插入了 C++ 数组字符串数据,但在显示输出时不显示
- 无法区分 JSON 对象/数组/字符串
- 为什么数组(字符串类型)的大小是 24 字节,带有单个空格元素
- 如何使用数组字符串进行输入验证
- (C++) 打印字符数组字符串的单词时出现问题
- 使用Back_inserter从任何位置的输入字符中使用Back_inserter进行过滤数组字符串
- C 函数反转字符数组字符串
- 如何在 c++ 中创建数组(字符串 [] )的向量
- 如何返回数组字符串的指针
- char数组字符串混淆
- 如何从字符数组字符串中提取空格
- 是否可以将 Bitset<8> 的值复制到数组字符串而不转换它们?
- C++数组字符串函数
- 如何在函数中操作字符数组(字符串)的指针,该指针在C / C ++中作为参数传递
- visual将音频文件存储到数组/字符串流C++中
- c++在char数组(字符串)上将what替换为
- 将数组字符串转换为intger c++(初学者)
- 需要设置数组字符串长度,使其恰好为13