vector 详解
发现许多关于 \(vector\) 的文章没有具体化的模板,所以我来添加一个有具体模板的 \(vector\) 文章。
-
插入元素
\(vector\) 中的插入主要是利用 \(push\)_\(back\) 实现的。
for (int i = 1, a; i <= n; i ++ ) cin >> a, v.push_back(a); -
删除元素
\(vector\) 中删除元素利用 \(pop\)_\(back\) 实现
v.pop_back(); -
找到 \(vector\) 首个元素(返回指针)
cout << *(v.begin()) << endl; -
找到 \(vector\) 末尾个元素(返回指针)
由于 \(vector\) 不定长,因此返回值不定。
剩余的就都是比较简单的东西了,直接贴一个代码感性理解吧~
#include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; vector<int> v; int X, L, R, n; void input() { cin >> n; for (int i = 1, a; i <= n; i ++ ) cin >> a, v.push_back(a); cin >> X >> L >> R; } void output() { printf("当前vector中的元素是:"); for (int i = 0; i < v.size(); i ++ ) printf("%d ", v[i]); printf("\n"); } void work(int x, int l, int r) { // 排序 sort(v.begin(), v.end()); output(); // 找到大于等于x的最小数 auto t = lower_bound(v.begin(), v.end(), x); printf("大于等于x的最小数是%d\n", *t); // 找到大于x的最小数 t = upper_bound(v.begin(), v.end(), x); printf("大于x的最小数是%d\n", *t); // 判断x是否在 vector里 vector<int>::iterator it; it = find(v.begin(), v.end(), x); if (it == v.end()) printf("没有找到\n"); else printf("找到了\n"); // 删除 vector中(l, r)的一段 v.erase(v.begin() + l, v.begin() + r + 1); output(); } int main() { input(); cout << *(v.end()) << endl; work(X, L, R); return 0; } /* input: 10 1 2 3 4 5 8 9 10 100 1000 100 2 5 output: 当前vector中的元素是:1 2 3 4 5 8 9 10 100 1000 大于等于x的最小数是100 大于x的最小数是100 没有找到 当前vector中的元素是:1 2 9 10 100 1000 */

浙公网安备 33010602011771号