vector数组

1.Vector数组可以认为是大小的数组。

2.它可以实现排序,函数是sort(v.begin(),v.end() 。

3.它可以实现二分查找功能,函数是lower_bound(v.begin(),v.end(),x)。查找的是值x,返回第一个大于或者等于小的值的指针。如果查找返回的是指针v.end()或者发现*it!=x那么容器里没有x这个数。

4.unique函数可以删除有序数组中的重复元素。头文件<algorithm>

unique(num,mun+n)返回的是num去重后的尾地址,之所以说比不真正把重复的元素删除,其实是,该函数把重复的元素一到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。

1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 int main(){
5     int num[] = {1,1,2,2,3,4,4,4,5,5,5};
6     unique(num,num + 11);
7     for(int i = 0 ; i < 11 ; i++) cout << num[i] << endl;
8 }

5.a.size()读取vector数组的大小,a.resize()改变大小。

6.a.push_back()向尾部添加元素,a.pop_back()删除尾部元素。

实例代码:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <vector>
 5 #include <string>
 6 #include <algorithm>
 7 #include <cmath>
 8 using namespace std;
 9 int n,m;
10 int main(){
11     vector<int> v;
12     int Case = 0;
13     while(scanf("%d%d",&n,&m) != EOF &&(n || m)){
14         v.clear();
15         int x;
16         for(int i = 0 ; i < n ; i++){
17             scanf("%d",&x);
18             v.push_back(x);
19         }
20         sort(v.begin(),v.end());
21         printf("CASE# %d:
",++Case);
22         for(int i = 0 ; i < m ; i++){
23             scanf("%d",&x);
24             vector<int>::iterator it = lower_bound(v.begin(),v.end(),x);
25             if(it == v.end())
26                 printf("%d not found
",x);
27             else{
28                 if(*it == x)
29                     printf("%d found at %d
",x,it - v.begin() + 1);
30                 else
31                     printf("%d not found
",x);
32             }
33         }
34     }
35     return 0;
36 }
View Code
原文地址:https://www.cnblogs.com/cyb123456/p/5797623.html