理解这行代码的作用
understanding what this line of code does
所以我应该写一个函数来删除重复项,并且很难理解某一行。
void repeat(char arr[], int times[],int &arraySize)
{
{
for(int i = 0; i<arraySize; i++)
{
for(int j =i+1; j<arraySize; j++)
{
if(arr[i]==arr[j])
{
for(int c = j; c < arraySize-1; c++){
arr[c] = arr[c+1];
}
arraySize--;
}
}
}
}
}
***for(int c = j; c < arraySize-1; c++){
arr[c] = arr[c+1];***
这些行是否一直循环到数组的最后一个元素?关于arr[c]=arr[c+1]也有点困惑;我们为什么需要它?
要删除数组中的一个元素(无论是否重复——这无关紧要(,必须将所有剩余元素下移一个位置,以覆盖被删除的元素。当我们说"移动"时,实际上是指"复制"。
因此,您看到的循环将从j
到arraySize - 1
的每个元素替换为紧随其后的元素。最后一个元素不需要被替换,事实上也没有被替换,因为语句arraySize--;
确保它永远不会被考虑。
(另外,如果你仔细想想,如果它被替换,它会被替换成什么?在[arraySize]
位置没有元素!C++数组是从零开始索引的,所以有效元素是从[0]
到[arraySize - 1]
。(
相关文章:
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 为什么这段代码不起作用,我该如何解决?
- 为什么这些完全相似的代码不起作用?
- 我不明白为什么我的代码不起作用并且需要更长的时间来运行
- 有人可以向我解释一下这段代码的作用吗?
- 我正在尝试解决一个需要数组总和值但代码不起作用的问题,我想做这样的事情
- 代码在Visual Studio 2017中不起作用,但在VS代码中工作
- std::string == 运算符在代码中不起作用
- 此代码中的" "是什么,它的基本作用是什么?
- C++ 多态性在代码::块 17.12 中不起作用
- 为什么 pop_back() 在此代码中不起作用?
- 注释一行使代码工作,而没有它,代码不起作用
- C++ 程序在代码块 IDE 中不起作用
- 代码编译但不起作用!cmd窗口只是理想和理想,但什么也没发生
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- 在 directx11 代码中更改全屏模式下的刷新率不起作用
- 为什么给定的代码不适用于所有测试用例?为什么当输入为 7786 时它不起作用?
- 这个size_t在 lambda 中有什么作用?C++代码