我在C ++中有两个数组:
int A[]={2, 3, 5, 1, 4};
int B[]={2, 3, 5};
我希望在A中将3乘3乘5和5乘2取代。这些替换基于B中的元素。
替换后,A'
将是[3 5 2 1 4](所有替换都是就地和同时进行的)。
编辑:另一个例子:
A = [ 2 5 3 1 9] , B = [3 2 1]
这意味着我必须以2乘2乘1和1乘3取3(见B)
The result is A'= [ 1 5 2 3 9]
答案 0 :(得分:2)
你可能想看看std :: rotate(first,middle,end);所以你的代码就像
std::rotate(A, A+1, A+3);
链接
答案 1 :(得分:0)
以下是您的代码的样子:
for(i=0; i<5; i++)
for(j=0; j<2; j++)
if (A[i] == B[j]){
A[i] = B[j+1];
break;
}
虽然这可能不是最有效的方法。