C++ Vector的用法 附带演示代码 (注释有代码详细介绍)
一.常用函数
头文件:#include<vector>
一.常用函数:
1.1.放入元素
push_back(value)
:
为矢量最后一个元素赋予值,若矢量已满,将自动调整大小压入矢量中。
1.2.删除元素
pop_back()
:
从矢量中删除最后一个元素
1.3.取出元素个数
size()
:
返回矢量中元素个数
1.4.取出某位置元素
at(position)
:
返回位置为position的元素(位置从0开始计)
例如:
vector_name.at(1)
同vector_name[1]
1.5.删除迭代器指向的元素
erase(iter)
:
删除iter指向的矢量元素
1.6.判断矢量是否为空
empty()
:
为bool类型,矢量为空则返回true,不为空返回false
1.7.清空矢量中所有元素
clear()
:
可以将矢量中的元素全部删除掉
1.8.指向第一个元素的迭代器
begin()
1.9.指向最后一个元素的迭代器
end()
1.10.插入元素到矢量中指定位置
(1)insert(iter,value)
:
将value值插入到iter迭代器指向元素之前
(2)insert(iter,n,value)
:
将value值的n个副本插入到iter迭代器指向元素之前
1.11.调整矢量大小
(1)resize(n)
:
调整矢量中值的个数为n。
若原本数的个数多于n则删除后面大于n的部分的数.
若少于n则扩充。默认值不确定。
(2)resize(n,default_value)
:同(1),但扩充时,新元素默认值调整为default_value值。
二.常用算法
头文件#include<algorithm>
2.1.排序算法
sort(iter1,iter2)
:
对迭代器iter1到iter2指向范围内的数进行排序,可用于矢量(vector)。
(默认为从小到大排序)
(从大到小排序在后面的代码示例中有)
2.2.查找算法
find(iter1,iter2,value)
:
从迭代器iter1到iter2指向的范围内寻找value值,若找到将返回其迭代器。否则将返回iter2迭代器。
常用的函数和算法就说到这里,其实还有一些函数及算法,但貌似不是很常用到,如果有需要的可以留言,我会再更新它们的。
三.演示代码。
(注释中有详细介绍,建议复制到编译器上边调试边学)
#include<iostream>
//头文件 vector
#include<vector>
//头文件 algorithm 用于实现排序 查找
#include<algorithm>
//引用自:https://blog.csdn.net/weixin_43350051/article/details/97945841
bool cmp(int x, int y) ///cmp函数传参的类型不是vector<int>型,是vector中元素类型,即int型
{
return x > y;
}
//通过函数对vector进行操作需要加上& 如 (vector<int>& a)
using namespace std;
int main()
{
//定义vector
//定义容器数组 此处为含有5个容器的容器数组
//vector<int>a(5);
//定义容器数组并且设置默认值 此处为含有5个容器的容器数组且默认值为10
//vector<int>a(5, 10);
//定义容器数组并分别设置默认值 此处为含有3个容器的容器数组默认值分别为 2 3 4
//vector<int>a{2,3,4};
//定义单个容器
vector<int> a;
//定义一个二维向量
//未进行扩展
//vector<vector<int>>b;
for (int i = 0; i < 10; i++)
{
//向容器中压入元素
a.push_back(-i * 10);
}
a[9] = 1;
//遍历方法1
cout << "原容器:" << endl;
//a.size() :a矢量的元素个数
for (int i = 0; i < a.size(); i++)
{
//访问vector元素的方法1:用[]取值
cout << a[i] << "\t";
}
//遍历方法2
//for (it = a.begin(); it != a.end(); it++)
//访问vector元素的方法2:用指针取值
// cout << *it << "\t";
//遍历方法3
/*for (int val : a)
{
cout << val << "\t";
}*/
//可用以下方法为a向量赋值
/*
for (int &val : a)
{
cin >> val;
}
*/
//排序 从小到大
//头文件 algorithm
cout << endl << "排序后:" << endl;
//加上cmp函数 为从大到小排序
sort(a.begin(), a.end()/*, cmp*/);
//展示排序结果是否正确
for (int i = 0; i < a.size(); i++)
{
cout << a[i] << "\t";
}
//迭代器定义 与find函数的使用 需要algorithm头文件
vector <int>::iterator ite;
ite = find(a.begin(), a.end(), 1);
cout << endl<<"元素1的前一个值:"<<*--ite;
return 0;
}