目录
vector的定义和结构非常简单,它由以下几个重要的部分组成:
在c++中,vector是一个动态数组容器,可以存储一系列相同类型的元素。它是标准库<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()函数获取指向最后一个元素之后位置的迭代器。
push_back():将元素添加到vector末尾
pop_back():删除vector末尾的元素??????? PS:一定要保证vector非空
begin()和end():返回指向第一个元素和最后一个元素之后位置的迭代器
要对vector排序,可以使用标准库中的std::sort函数,该函数位于<algorithm>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int>vec = { 5,2,8,9,1 };
sort(vec.begin(), vec.end());
for (const auto& i : vec)
{
cout << i << " ";
}
return 0;
}
运行结果:1 2 5 8 9
要去除vector中重复元素,可使用unique函数。该函数位于<algorithm>
首先,排序,以便相同的元素相邻。然后,unique函数将重复的元素移动到vector的末尾,并返回一个指向重复元素的迭代器。最后,可以使用vec.erase函数将重复元素从vector中删除。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int>vec = { 2,1,3,2,4,1,5,4 };
sort(vec.begin(), vec.end());
auto last = unique(vec.begin(), vec.end());
vec.erase(last, vec.end());
for (const auto& i : vec)
{
cout << i << " ";
}
return 0;
}
运行结果:1 2 3 4 5
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
vector<int>numbers;
//向向量中添加元素
numbers.push_back(5);
numbers.push_back(2);
numbers.push_back(8);
numbers.push_back(5);
numbers.push_back(1);
numbers.push_back(2);
numbers.push_back(9);
numbers.push_back(8);
//打印向量中的元素
cout << "原始向量中的元素:";
for (const auto& i : numbers)
{
cout << i << ' ';//5 2 8 5 1 2 9 8
}
cout << endl;
//对向量进行排序
sort(numbers.begin(), numbers.end());
//打印排序后的向量
cout << "排序后的向量为:";
for (const auto& i : numbers)
{
cout << i << ' ';//1 2 2 5 5 8 8 9
}
cout << endl;
//去除重复元素
numbers.erase(unique(numbers.begin(), numbers.end()), numbers.end());
//打印去重后的向量
cout << "去重后的向量:";
for (const auto& i : numbers)
{
cout << i << ' ';//1 2 5 8 9
}
cout << endl;
//向向量中插入元素
numbers.insert(numbers.begin() + 2, 3);//1 2 3 5 8 9
cout << "插入元素后的向量:";
for (const auto& i : numbers)
{
cout << i << ' ';
}
cout << endl;
//删除向量中的某个元素
numbers.erase(numbers.begin() + 4);//1 2 3 5 9
cout << "删除元素后的向量:";
for (const auto& i : numbers)
{
cout << i << ' ';
}
cout << endl;
//检查向量是否为空
if (numbers.empty())
{
cout << "向量为空" << endl;
}
else
{
cout << "向量不为空" << endl;
}
//获取向量的大小
cout << "向量的大小:" << numbers.size() << endl;
//清空向量
numbers.clear();
//检查向量是否为空
if (numbers.empty())
{
cout << "向量为空" << endl;
}
else
{
cout << "向量不为空" << endl;
}
return 0;
}
结果: