当前位置: 首页 > 知识库问答 >
问题:

数组插入L值、R值

姜俊友
2023-03-14

这只是出于好奇,而我当时正在练习数组插入以图好玩。下面的代码中有一个问题,为什么a[i]=a[i+1]给我一些垃圾值,但将其设置为a[i+1]=a[i]就解决了这个问题。逻辑上他们也是这样做的,但我只是想知道它是否与L值和R值引用有关?

#include<iostream>
    
#include<array>
using namespace std;
int main()
{
    int pos,value;      
    std::array<int,10> arr{1,2,3,4,5,6,7,8,9};
    for (int i:arr){
        cout<<i<<" ";
    }
    std::cout<<"\n";
    cin>>value>>pos;
    for(int i=arr.size()-1;i>=pos;i--){
        arr[i]=arr[i+1];
    }
    arr[pos]=value;
    for (int i:arr){
        cout<<i<<" ";
    }

}
#include<iostream>
#include<array>
using namespace std;
int main()
{
    int pos,value;      
    std::array<int,10> arr{1,2,3,4,5,6,7,8,9};
    for (int i:arr){
        cout<<i<<" ";
    }
    std::cout<<"\n";
    cin>>value>>pos;
    for(int i=arr.size()-1;i>=pos;i--){
        arr[i+1]=arr[i];
    }
    arr[pos]=value;
    for (int i:arr){
        cout<<i<<" ";
    }
}

共有1个答案

秦炜
2023-03-14

“逻辑上他们也是这样做的”

否--第一个版本用相同的数字(数组中的最后一个)填充数组中受影响的部分。第二个将数字向上洗牌,为value留出空间。

用笔和纸手动执行循环,您将看到第一个版本向下复制相同的值,直到pos

您还可以通过访问arrout of bounds来启动这两个循环,这使得两个版本都具有未定义的行为。

我怀疑你想让这个版本的数字往上移动:

for(int i=arr.size()-2; i>=pos; --i) { // -2 since i+1 must be less than size()
    arr[i+1]=arr[i];
}
 类似资料:
  • 所以我有一个选择题列表,我想存储,每次用户回答相同的问题,他对这个问题的答案。所以我想创建一个文档每个用户和他的回答历史每个问题。我做了一个问题数组,其中包含了questionId和一个答案数组(“ans”和他的答案。所以我写了一个基本代码,在这里我为问题1添加了他的第一个答案“a”,现在我想用答案“b”更新这个文档。 我知道这是一个非常基本的问题,但我已经搜索了其他问题,但我无法得到语法工作。我

  • L · R 按钮 设定播放保存于UMD™Video或Memory Stick™之图像文件案时,是否使用章省略机能(L/R按钮之操作机能)。 不使用 停用章省略机能(L/R按钮之操作)。 省略 启用章省略机能(L/R按钮之操作)。

  • 问题内容: 我有两个numpy数组: 我试图得到的是这样的: 我的方法不是很像Numpy,需要针对非常大的数组进行改进(摆脱for循环): 在Numpy中执行此操作的最佳方法是什么?这样生成myarray然后对其进行操作会更好吗? 问题答案: 这种广播技巧:

  • 给定一个正负整数数组,如何找到长度在和之间的最大和子数组(连续子数组)? 例如:如果数组是 我的方法: 我不太确定如何处理这个问题。我想也许是滑动窗口+Kadane的组合。我听说前缀和+滑动窗口可能是一个可能的解决方案,但我不确定如何实现它。

  • 问题内容: 我想插入尺寸为4x4的2D数组“测试”(例如,实际上接近于1000x1000),其形状为8x8的网格。 我尝试使用griddata,但似乎只能使用1D吗?错误告诉我,“值和点的数量不同”,我犯错了吗? 问题答案: 您可以使用和进行此操作。 您需要确保新的X和Y范围与旧的范围相同,并且步长较小。这很容易:

  • 我想向数据库中插入值,但它无法工作,尽管我的代码在用作存储过程时运行良好。我需要使用按钮点击来存储值。请告诉我代码有什么问题。它没有显示任何错误或异常,但表中的数据没有更新