C/C++教程

C++ vector简单使用

本文主要是介绍C++ vector简单使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

模板类vector

详细介绍

  • 在计算中,vector(矢量)对应数组
  • 在数学中,可以使用N个分量来表示N维数学矢量,因此就从这方面讲,数学矢量类似一个N维数组。然而数学矢量还有一些计算机矢量不具备的其他特征,如内乘积和外乘积。
  • 计算矢量存储了一组可随机访问的值。
  • 头文件 #include <vector>

操作

  • 创建 vector<type> variable(size);
#include <vector>
using namespace std;

vector<int> ratings(5);   //5个int 的vector
int n;
cin >> n;
vector<double> scores(n);  //n个double的vector

//由于运算符[]被重载,因此创建vector对象后,可以使用通常的数组表示法来访问各个元素:
rating[0] = 9;
for(int i = 0; i < n; i++)
	cout << scores[i] << endl;
  • 可对矢量执行的操作 一
    • size(): 返回容器中元素的数目

    • swap(vector, vector): 交换两个容器的内容

    • begin(): 返回一个指向容器中第一个元素的迭代器

    • end(): 返回一个表示超过容器尾迭代器
      迭代器(iterator): 一个指针,可以执行类似解除引用、递增操作的对象

vector<double>::iterator pd;
pd = scores.begin();
*pd = 22.3;
++pd;
//也可以使用 C++11 自动推断指针类型
auto pd = scores.begin();
//由迭代器,上述for内容可以改为如下:
for(pd = scores.begin(); pd != scores.end(); ++pd)
	cout << *pd << endl;
  • 可对矢量执行的操作 二

    • push_back(val): 将元素添加到末尾。
    • erase(): 接收两个迭代器参数,这些参数指定要删除的区间 [ p1, p2)
    • insert(): 功能与erase()相反,它接受三个迭代器参数。
      • 第一个参数:指定新元素的插入位置
      • 第二个参数、第三个参数:被插入区间 [p1, p2)
  • 区间概念图
    在这里插入图片描述#### 对矢量可执行的其他操作(通常要对数组执行的搜索、排序、随机排序等)STL初涉:for_each( )、random_shuffle( )、sort( )

  • for_each( )

  • random_shuffle( )

  • sort( )

vector<Review>::iterator pr;
for(pr = books.begin(); pr!= books.end(); pr++)
	ShowReview(*pr);
//迭代动作
//前两个参数为定义容器中区间的迭代器,最后一个是指向函数的指针(函数对象)
for_each(books.begin(), books.end(), ShowReview);

//乱序动作
//打乱books.begin()—>books.end() 范围的数据排序
random_shuffle(books.begin(), books.end());

//排序动作
//以 < 方式
vector<int> coolstuff;
...
sort(coolstuff.begin(), coolstuff.end());
//如果自定义对象, 就需要提供xxxx < 比较函数代入排序
sort(class.begin(), class.end(), xxxx);
这篇关于C++ vector简单使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!