1.Vector数组可以认为是大小的数组。
2.它可以实现排序,函数是sort(v.begin(),v.end() 。
3.它可以实现二分查找功能,函数是lower_bound(v.begin(),v.end(),x)。查找的是值x。返回的是查找值的指针。如果查找返回的是指针v.end()或者发现*it!=x那么容器里没有x这个数。
实例代码:
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:\n",++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\n",x); 27 else{ 28 if(*it == x) 29 printf("%d found at %d\n",x,it - v.begin() + 1); 30 else 31 printf("%d not found\n",x); 32 } 33 } 34 } 35 return 0; 36 }
时间: 2024-12-15 06:56:37