vector
一般程序设计里面主要用到的就是插入,删除,遍历。这里不做延伸。
在处理图论之类的问题时,经常要和结构体进行结合使用,我们有时会实现结构体排序函数,以达到我们的排序需求。
单个数据
vector<int> v1;
// 插入数据
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
//删除最后一个数据
v1.pop_back();
sort(v1.begin(), v1.end(), cmp);
与结构体结合
struct node {
int x;
int y;
};
//定义结构体排序函数
bool cmp2(node &a, node &b) {
return a.x + a.y > b.x + b.y;
}
// 与结构体结合使用
vector<node> v2;
// 插入结构体数据
node p;
for (int i = 0; i < 5; ++i) {
p.x = i;
p.y = i + 1;
v2.push_back(p);
}
与pair结合
//定义pair排序函数
bool cmp1(const pair<int, string> a, const pair<int, string> b) {
return a.first > b.first;
}
// 与pair结合使用
vector<pair<int, string> > v3;
// 插入pair数据
v3.push_back(make_pair<int, string>(1, "one"));
v3.push_back(make_pair<int, string>(2, "two"));
v3.push_back(make_pair<int, string>(3, "three"));
完整代码
//
// Created by 29273 on 2021-03-16.
//
#include "bits/stdc++.h"
using namespace std;
struct node {
int x;
int y;
};
int main() {
vector<int> v1;
// 与结构体结合使用
vector<node> v2;
// 与pair结合使用
vector<pair<int, string> > v3;
// 插入数据
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
// 插入结构体数据
node p;
for (int i = 0; i < 5; ++i) {
p.x = i;
p.y = i + 1;
v2.push_back(p);
}
// 插入pair数据
v3.push_back(make_pair<int, string>(1, "one"));
v3.push_back(make_pair<int, string>(2, "two"));
v3.push_back(make_pair<int, string>(3, "three"));
//删除最后一个数据
v1.pop_back();
//遍历的三种方法
for (int i : v1) {
printf("%d ", i);
}
cout << endl;
for (int i = 0; i < v1.size(); i++) {
printf("%d ", v2.at(i).x);
printf("%d ", v2.at(i).y);
}
cout << endl;
for (int i = 0; i < v3.size(); ++i) {
cout << v3[i].first << endl;
cout << v3[i].second << endl;
}
return 0;
}