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
该题利用两个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
标签:下标,cout,STL,用法,尾部,int,vector,vec2 From: https://www.cnblogs.com/rw666/p/17879257.html