1.vector的定义和特性
在C++中,vector是一个动态数组容器,可以存储一系列相同类型的元素它是标准库中定义的模板类。
vector的定义和结构非常简单,它由以下几个重要的部分组成:
模板类声明:vector是一个模板类,因此在使用之前需要包含头文件。
声明一个vector对象的通用语法如下:std::vector<T> vec;
这里的T是要存储在vector中的元素类型。
容器大小:
vector是一个动态数组,可以根据需要自动调整大小。它会根据元素的数量动态分配内存空间。
元素访问:
可以通过索引来访问vector中的元素。索引从0开始,最后一个元素的索引是size( )-1。可以使用[]运算符或at()函数来访问元素。
元素添加和删除:
可以使用push_back()函数在vector的末尾添加元素,使用pop_back()函数删除末尾的元素。
还可以使用insert()函数在指定位置插入元素,使用erase()函数删除指定位置的元素。
容器大小管理:
可以使用size()函数获取vector中元素的数量,使用empty()函数检查vector是否为空。还可以使用resize()函数调整vector的大小。
迭代器:
vector提供了迭代器,可以用于遍历容器中的元素。可以使用begin()函数获取指向第一个元素的迭代器,使用end()函数获取指向最后一个元素下一位置的迭代器。
2.vector的常用函数
push_back():将元素添加到vector的末尾。
pop_back():删除vector末尾的元素。
一定保证vector非空
begin()和end():返回指向vector第一个元素和最后一个元素之后位置的迭代器。
3.vector排序去重
排序:
要对vector进行排序,可以使用标准库中的sort函数。
该函数位于头文件中。
#include <algorithm>
std::vector <T> vec ={...};
std::sort(vec.begin(),vec.end());
这里的T是vector中元素的类型
std::sort函数接受两个迭代器参数,表示要排序的范围
vec.begin()返回指向vector第一个元素的迭代器
vec.end()返回指向最后一个元素之后位置的迭代器。
去重:
该函数位于头文件中。要去除vector中的重复元素,可以使用unique函数。
首先,需要对vector进行排序,以便相同的元素相邻。然后,std::unique函数将重复的元素移动到vector的末尾,并返回一个指向不重复元素的迭代器。最后,可以使用vec.erase函数将重复元素从vector中删除。
一下是上述知识点的综合应用:
#include<bits/stdc++.h>
using namespace std;
int main(void) {
vector <int> nums;
nums.push_back(2);
nums.push_back(3);
nums.push_back(2);
nums.push_back(6);
nums.push_back(5);
nums.push_back(3);
nums.push_back(1);
nums.push_back(3);
for (auto& num : nums) {//排序前
cout << num << ' ';
}
cout << endl;
sort(nums.begin(), nums.end());
for (auto& num : nums) {//排序后
cout << num << ' ';
}
cout << endl;
auto last = unique(nums.begin(), nums.end());
//返回一个指向去重后范围的尾后迭代器
nums.erase(last, nums.end());
for (auto& num : nums) {//去除后
cout << num << ' ';
}
cout << endl;
nums.insert(nums.begin() + 2, 3);
//在下标为2的地方加入3
nums.erase(nums.begin() + 4);
//删除下标为4的元素
nums.clear();//清空向量
return 0;
}