请利用STL vector容器编写程序。 输入格式: 输入第一行一个整数:放入vector容器中初始的元素个数,接下来一行:n个整数,即容器中初始的元素,并倒序置于容器中;再一行一个整数p,表示对vector容器操作的次数,之后q行,每行代表一个操作,其格式如下: 1 loc val:在loc位置前插入val;(注:位置从0开始,下同) 2 loc cnt val:在loc位置前插入cnt个val; 3 val:在末尾插入val; 4 val:查找元素val的位置;(注:正序查找第一个相同的元素) 5 loc:删除loc位置的元素; 6:删除末尾元素; 7:排序;(注:升序排序) 8:输出全部元素。 输出格式: 对操作1和2:若loc不合法,输出:"位置不合法,无法插入";否则无输出。 对操作4:输出元素位置(下标);如不存在查找的元素,输出-1。 对操作5:若loc不合法,输出:"位置不合法,无法删除";否则输出删除的元素。 对操作6:输出删除的元素。 对操作7:无输出。 对操作8:正序输出全部元素;(注:末尾无空格)
时间: 2024-03-15 08:44:26 浏览: 85
C++ STL入门教程(1) vector向量容器使用方法
以下是利用STL vector容器编写的程序,请参考:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, p;
cin >> n;
vector<int> v(n);
for (int i = n - 1; i >= 0; i--) {
cin >> v[i];
}
cin >> p;
while (p--) {
int op;
cin >> op;
if (op == 1) {
int loc, val;
cin >> loc >> val;
if (loc < 0 || loc > v.size()) {
cout << "位置不合法,无法插入" << endl;
} else {
v.insert(v.begin() + loc, val);
}
} else if (op == 2) {
int loc, cnt, val;
cin >> loc >> cnt >> val;
if (loc < 0 || loc > v.size()) {
cout << "位置不合法,无法插入" << endl;
} else {
v.insert(v.begin() + loc, cnt, val);
}
} else if (op == 3) {
int val;
cin >> val;
v.push_back(val);
} else if (op == 4) {
int val;
cin >> val;
auto it = find(v.begin(), v.end(), val);
if (it == v.end()) {
cout << -1 << endl;
} else {
cout << it - v.begin() << endl;
}
} else if (op == 5) {
int loc;
cin >> loc;
if (loc < 0 || loc >= v.size()) {
cout << "位置不合法,无法删除" << endl;
} else {
cout << v[loc] << endl;
v.erase(v.begin() + loc);
}
} else if (op == 6) {
cout << v.back() << endl;
v.pop_back();
} else if (op == 7) {
sort(v.begin(), v.end());
} else if (op == 8) {
for (int i = 0; i < v.size(); i++) {
cout << v[i];
if (i != v.size() - 1) {
cout << " ";
}
}
cout << endl;
}
}
return 0;
}
```
阅读全文