vector:
1.构造函数:
vector<T> v; //T是类型,v是标识符
vector<T> v(a.begin(), a.end()); //将a的[begin,end]的内容拷贝给v
vector<int> v2(v1); //拷贝勾造
vector<T> v(n, ele); //n是最大容量,ele是初始所有值
vector<vector<T>> v; //二维向量
2.常用函数
v.push_back(ele); //在向量末尾插入元素ele
v.pop_back(); //删除向量末尾的元素
v.size(); //返回元素的数量
v.empty(); //检查向量是否为空
v.clear(); //清空向量中的所有元素
int ele = v.at(index); //返回给定索引位置index上的元素给ele
int ele = v.front(); //返回向量中第一个元素
int ele = v.back(); //返回向量中最后一个元素
v.insert(position, value); //在指定位置position前插入一个元素value
v.insert(position, first, last); //在指定位置position前插入[first, last)范围内的元素
v.insert(position, count, value); //在指定位置position前插入count个value
v.erase(it); //删除指定位置it的元素
v.erase(it1, it2); //删除指定范围[it1,it2]内的元素
v.resize(newSize); //调整向量大小为newSize,新增元素为0
v1.swap(v2); //交换两个向量v1、v2的内容
3.vector赋值操作
v2=v1; //直接使用等号
v.assign(a.begin(), a.end()); // 将a的[begin,end]的内容拷贝给v
v.assign(n, ele); // 将n个ele拷贝赋值给v
4.vector访问
v[0]; //使用下标访问
//使用迭代器访问
for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}
5.例题
题目:合并两个有序数组
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/merge-sorted-array
代码:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i = 0;
int j=0;
for (; i < m+n ;) {
if(j==n){
break;
}
j = 0;
for (; j < n ;) {
if (nums1[i] > nums2[j]) {
nums1.insert(nums1.begin() + i, nums2[j]);
nums1.pop_back();
i = i + 1;
j = j + 1;
}
else if (nums1[i] <= nums2[j]) {
if ((i-j)<m){
i = i + 1;
}
else{
nums1.insert(nums1.begin() + i, nums2[j]);
nums1.pop_back();
i = i + 1;
j = j + 1;
}
}
}
}
}
};