STL 1.3.2 修改,查找,统计,比较序列

一.修改 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值