vector的定义:
功能 | 例子 | 说明 |
---|---|---|
定义 int 型数组 | vector < int > a; vector < int > b(a); vector < int > a(100); vector < int > a(100,6); | 默认初始化,a为空 用a定义b a有100个值为==0==的元素 a有100个值为==6==的元素 |
定义 string 型数组 | vector < string > s(10,“hello”); vector < string > s(t.begin(),t.end()); | 10个值为hello的元素 s数组对t进行复制 |
定义 结构体 型数组 | struct node{int x,y;}; vector < node > a; | a用来存坐标 |
基本常用操作
功能 | 例子 | 说明 |
---|---|---|
赋值 | a.push_back(100) | 在尾部添加值为100的元素 |
求元素个数 | int size = a.size() | 可速度求出数组元素个数 |
判断是否为空 | bool isEmpty = a.empty(); | 判断是否为空 |
打印 | cout << a[i] << endl; | 打印数组出下标为i的值 |
中间插入 | a.insert(a.begin()+i,K); | 在第i个元素==前面==插入K |
尾部多个插入 | a.insert(a.end(),10,5); | 尾部插入10个值为5的值 |
删除尾部 | a.pop_back(); | 删除尾部元素 |
删除区间 | a.erase(a.begin()+i,a.begin()+j); | 删除区间 [ i , j-1 ] 的元素 |
删除单个元素 | a.erase(a.begin()+i); | 删除第i个元素 |
调整大小 | a.resize(n); | 数组大小变为n |
清空 | a.clear(); | 清空数组 |
翻转 | reverse(a.begin(),a.end()); | 用函数reverse()翻转整个数组 |
排序 | sort(a.begin(),a.end()); | 排序,默认从小到大排 |
1. 创建和初始化 vector
#include <iostream>
#include <vector>
int main() {
// 创建一个空的 vector
std::vector<int> vec;
// 使用初始值创建 vector
std::vector<int> vec2(5, 10); // 创建一个包含 5 个元素,每个元素值为 10 的 vector
// 使用列表初始化
std::vector<int> vec3 = {1, 2, 3, 4, 5};
return 0;
}
2. 添加元素
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec;
// 添加单个元素
vec.push_back(1);
vec.push_back(2);
// 插入元素
vec.insert(vec.begin(), 0); // 在开头插入 0
return 0;
}
3. 访问元素
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用下标访问元素
std::cout << "第一个元素: " << vec[0] << std::endl;
// 使用 at() 方法访问元素
std::cout << "第二个元素: " << vec.at(1) << std::endl;
// 获取第一个和最后一个元素
std::cout << "第一个元素: " << vec.front() << std::endl;
std::cout << "最后一个元素: " << vec.back() << std::endl;
return 0;
}
4. 删除元素
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 删除最后一个元素
vec.pop_back();
// 删除指定位置的元素
vec.erase(vec.begin() + 1); // 删除第二个元素
// 清空 vector
vec.clear();
return 0;
}
5. 大小和容量
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 获取大小
std::cout << "大小: " << vec.size() << std::endl;
// 获取容量
std::cout << "容量: " << vec.capacity() << std::endl;
// 检查是否为空
std::cout << "是否为空: " << (vec.empty() ? "是" : "否") << std::endl;
// 改变大小
vec.resize(3); // 现在 vec 只包含 3 个元素
return 0;
}
6. 迭代器
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用迭代器遍历 vector
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// 使用范围 for 循环遍历 vector
for (int val : vec) {
std::cout << val << " ";
}
std::cout << std::endl;
return 0;
}
7、自定义排序
struct point {
int dis;
};
// 自定义比较函数
bool compare(const point &a, const point &b) {
return a.dis < b.dis; // 按照dis字段升序排序
}
std::sort(vec.begin(), vec.end(), compare);
Comments NOTHING