Arrays C++如何替换数组中的多个元素

Arrays C++如何替换数组中的多个元素,arrays,replace,Arrays,Replace,我在C++中有两个数组: int A[]={2, 3, 5, 1, 4}; int B[]={2, 3, 5}; 我想在A中用3替换2,用5替换3,用2替换5。这些替换基于B中的元素 更换后,A'将是[3 5 2 1 4]所有更换都在原位且同时进行 编辑:另一个例子: A = [ 2 5 3 1 9] , B = [3 2 1] 这意味着我必须用2替换3,用1替换2,用3替换1参见B The result is A'= [ 1 5 2 3 9] 您可能想签出std::rota

我在C++中有两个数组:

int A[]={2, 3, 5, 1, 4};
int B[]={2, 3, 5}; 
我想在A中用3替换2,用5替换3,用2替换5。这些替换基于B中的元素

更换后,A'将是[3 5 2 1 4]所有更换都在原位且同时进行

编辑:另一个例子:

A = [ 2 5 3 1 9] ,       B = [3 2 1]
这意味着我必须用2替换3,用1替换2,用3替换1参见B

The result is A'= [ 1 5 2 3 9]

您可能想签出std::rotate first、middle、end;因此,您的代码将类似于

    std::rotate(A, A+1, A+3);
链接是


下面是您的代码的外观:

for(i=0; i<5; i++)
for(j=0; j<2; j++)
   if (A[i] == B[j]){
       A[i] = B[j+1];
       break;
   }

尽管这可能不是最有效的方法。

这些应该是变量声明:A=[2 3 5 1 4],B=[2->3->5]。你能更清楚地说明你在找什么吗?对不起,我的意思是B等于{2,3,5}。int B[]={2,3,5};箭头显示了我要替换元素的方式。2->3->5基于第二个矩阵,不一定是A中的连续元素。我正在添加另一个示例请参见新示例。第一个似乎模棱两可。我已经编辑了我以前的答案,并给出了C++中的问题代码。如果siZea= on和siZeb= OM,运行时间在最坏的情况下将是OMN。如果有更有效的算法或数据结构。在我的例子中,N可能约为5000000,M约为100~1000。并非所有元素都需要替换,这可能会有一个更有效的算法!但我不确定。当我这样想的时候,我的大脑会说,为了找出是否需要替换元素,你必须将它与B中的所有元素进行比较。尽管如果结果证明我错了,我不会感到惊讶。