一.修改 1--6
1.copy_n
复制前n
个元素到新的数组
int arr1[4] = {1,3,2,4};
int arr2[4];
copy_n(arr1, 4, arr2);
int* Copy_N(int *arr, int n) 复制数组arr中前n个元素并作为函数返回值
{
int *a=new int [n];
copy_n(arr,n,a);
return a;
}
2.swap(a,b) 交换两数值
int a=1, b=2;
swap(a, b); \\ a=2,b=1
3.replace(arr, arr+4, i, e); i
替换元素
e
arr:替换首地址
arr+n:替换尾地址
i:要被替换的元素
e:替换成的元素
int arr[4] = {1,2,2,3};
replace(arr, arr+4, 2, 0); \\ arr结果为{1,0,0,3}
4.fill(arr, arr+4, e)将数组中的所有元素都重新赋值为e
arr:数组首地址
arr+n:数尾地址
e: 赋值元素
int arr[4] = {1,2,2,3};
fill(arr, arr+4, 5);\\ arr结果为{5,5,5,5}
5.reverse(arr,arr+n)
将数组中的所有元素对称交换
int arr[4] = {1,2,3,4};
reverse(arr, arr+4);\\ arr结果为{4,3,2,1}
6.rotate(arr, arr+3, arr+5)
滚动
arr:数组首地址
arr+3:数组滚动最后一个元素的地址
arr+5:数组尾地址
int arr[5] = {0,1,2,3,4};
rotate(arr, arr+3, arr+5); \\ arr结果为{3,4,0,1,2}
二.查找(无序数组),区别于binary_search(), Algorithm 1--2
1.find(arr,arr+n,e)若存在则返回第一个e所在的地址,否则返回数组尾地址
arr=数组首地址
arr+n:数组尾地址
e: 查找指定元素
int arr[4] = {1,3,2,3};
int *p = find(arr, arr+4, 3); // p结果为地址arr+1,存在
int *q = find(arr, arr+4, 0); // q结果为地址arr+4,不存在
2.Find_End(
arr, arr+n, arr1, arr1+t)
无序数组arr
中的查找指定子数组arr1
是否存在,若存在则返回待查子数组arr1
最后出现在原数组arr1
的地址,否则返回原数组的尾地址
int arr[5] = {0,3,4,3,4};
int arr1[2] = {3,4};
int *p = find_end(arr, arr+5, arr1, arr1+2); // p结果为地址arr+3
三. 统计 count
count(arr,arr+n,x) 在数组中统计指定元素x
出现的次数
int arr[5] = {0,3,4,3,4};
int cnt = count(arr,arr+5,3); // cnt结果为2
四. 相等比较 Equal
equal(arr1, arr1+n, arr2) 两个数组相等:数组个数相同,对应位置上的元素值相同
equal
就可以比较两个数组是否相等,返回比较真值(bool)
int arr1[2] = {3,4};
int arr2[2] = {3,4};
bool judge1 = equal(arr1, arr1+2, arr2); // judge1结果为地址true