STL用法

发布时间 2023-12-06 12:55:31作者: rw156

1.vector数组从尾部插入,尾部删除。相关用法代码如下:

 1         //1.尾部插入及删除数字
 2     vec2.push_back(1);  //尾部插入元素
 3         vec2.pop_back()     //删除尾部元素
 4  
 5     //2.使用下标访问元素,
 6     cout << vec2[0] << endl; //记住下标是从0开始的。
 7  
 8     //3.使用迭代器访问元素.
 9     vector<int>::iterator it;
10     for (it = vec2.begin(); it != vec2.end(); it++)
11         cout << *it << endl;
12  
13     //4.插入元素:    
14     vec2.insert(vec2.begin() + i, a); //在第i + 1个元素前面插入a;
15  
16     
17     //5.删除元素:    
18     vec2.erase(vec2.begin() + 2); //删除第3个元素
19  
20     vec2.erase(vec2.begin() + i, vec2.end() + j); //删除区间[i, j - 1]; 区间从0开始
21  
22     //6.求数组大小:
23     vec2.size();
24  
25     //7.清空 : 
26     vec2.clear();
Code

例题:Problem - B - Codeforces

该题利用两个vector分别存入小写和大写字母的下标,并且出现b和B的时候删除,最后按照下标从小到大输出

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4  
 5 const int N = 210,inf = 1e9;
 6 int n,m; 
 7 int _;
 8  
 9 int main()
10 {
11     ios::sync_with_stdio(0);
12     cin.tie(0);
13     cout.tie(0);
14     cin >>_;
15     while(_ --)
16     {
17       string s;
18       cin >> s;
19       int n = s.size();
20       vector<int> a,b; //用vector数组来存储大小写字母的下标
21       for (int i = 0; i < n; i ++ )
22       {
23           if(s[i] == 'b')
24           {
25               if(a.size()) a.pop_back(); //从尾部删除
26           }else if(s[i] == 'B'){
27               if(b.size()) b.pop_back();
28           }else if(s[i] >= 'a' && s[i] <= 'z'){
29               a.push_back(i);//尾部插入
30           }else {
31               b.push_back(i);
32           }
33       }
34       
35       int k1 = 0,k2 = 0; //定义两个指针
36       while(k1 < a.size() || k2 < b.size()){
37           if(k1 < a.size() &&(k2 >= b.size() || a[k1] < b[k2])) {//比较下标哪个小输出哪个
38               cout << s[a[k1]] ;
39               k1 ++;
40           }else 
41           {
42               cout << s[b[k2]];
43               k2 ++;
44           }
45       }
46       cout << endl;
47     }
48     return 0;
49 }
Code