目录
3、STL容器提供了一些基本的方法,这些方法当然也适用于vector
(6)insert()方法:插入其它矢量中给定区间的元素到当前矢量位置。
前言
由于工作需要,要补一下C++的知识,主要是vector模板类和map模板类,以前在学校里学C++只学了类、对象、继承、多态等一些面向对象的基本思想,并没有接触到标准模板库(STL)的内容。本篇文章记录下自己对STL中,vector(矢量)模板类的基础学习。
初学的同学我们可以交流、补充我的不足,大佬光临还希望能提出建议。无论如何,您的建言我都将感激不尽~。
本文参考书籍:《C++ Primer Plus》。
一、标准模板库 STL 概念:
STL提供了一组表示容器、迭代器、函数对象、算法的模板。STL能够构造各种容器(包括数组、队列、链表),和执行各种操作(搜索、排序、随机排列)。
容器:是一个与数组类似的单元,可以存储若干个值。STL容器是同质的,即存储的值的类型相同。
迭代器:遍历容器的对象,与能够遍历数组的指针类似,是广义指针。
函数对象:类似于函数的对象,可以是类对象或函数指针(包括函数名,因为函数名被用作指针)。
算法:完成特定任务的方法(排序)。
STL不是面向对象的编程,而是一种不同的编程模式(泛型编程)
二、类模板 vector
可在运行阶段设置vector对象的长度,附加新数据,中间插入数据。
实际上,vector类确实使用new和delete来管理内存,这种工作是自动完成的。
1、定义
vector<typeName> vt(n_elem);
(1) 释义:声明创建一个名为vt的vector对象,它可以存储n_elem个typeNmae类型的元素。
(2) 在定义形式上和数组定义类比:vector<int> a(n); VS int a[n]; 相比数组,模板的操作比较复杂,需要使用vector包中的各种方法。
(3) 示例:
#includ <vector> //需要头文件
using namespace std; //vector包含在命名空间std内。
int main()
{
...
//vi是一个vector<int>对象,存储1个int类型的元素
vector<int> vi;
int n;
//vd是一个vector<double>对象,存储n个double型的元素。
cin >> n;
vector<double> vd(n);
...
return 0;
}
vi是一个vector<int>对象,vd是一个vector<doub