/* 定义类模板:
template<class <类型参数>>
class<类名>{
.........
};
首先定义一个类模板,通过使用不同的实参生成不同的类:
类模板的使用方法:
类模板名<数据类型>对象名;
具体见收藏
*/
/*STL(Standard Template Libary):标准模板库,主要包括了容器、算法、迭代器
1、容器:容纳相同元素的对象,主要由类模板实现
顺序容器:容器中的元素由线性结构组织起来,可以逐个读写元素。包括vector(向量),deque(双端队列),list(双向链表)
关联型容器:通过键(key)来存储,读取元素。主要有map(映射),set(集合) //(python字典?)
容器适配器:对容器再包装,使其变成另一种容器。stack(栈),队列(queue)
2、迭代器:用于确定元素位置的数据类型,用来遍历容器中的所有元素,它的用法与指针类似(指针就是一种迭代器)
每一种容器都定义了一种迭代器:
格式为:
容器类型名<元素类型>::iterator 迭代器变量名
如:vector<int>::iterator it;
访问一个迭代器所指向的元素:
*迭代器变量名
如:*it=5;
3、算法:即很多函数模板的集合,提供了大量算法,用于操作各种容器。包括了比较、排序、修改、复制等等
算法通过迭代器操作容器中的元素
*/
//vector实际上是对动态数组的封装,与数组一样,vector对象的空间随着插入删除自动调整
#include<iostream>
#include<vector>
using namespace std;
int main() {
/*
vector<int>v1; //创建一个空向量
vector<string>s1;//创建一个空向量
vector<int>v2(v1);//将v1的内容复制到v2
vector<string>s2(15);//创建15个元素的向量
vector<double>v3(15, 3);//创建15个元素的向量,所有元素都是3
vector<int>* p = new vector<int>(15, 3);//创建向量指针
push_back()函数向vector尾部添加元素
insert()向vector中插入元素
*/
vector<int>a1;
a1.push_back(1);//插入元素1
a1.push_back(2);
a1.insert(a1.begin(), 0);//头部插入。a1.begin()是个迭代器
a1.insert(a1.end(), 4);//尾部插入。a1.end()是个迭代器
a1.insert(a1.end() - 1, 3);//倒数第二个位置
//0 1 2 3 4
//遍历
a1[4] = 10; //0 1 2 3 10
for (int i = 0; i < a1.size(); i++) { //a1.size()为5
cout << a1[i] << endl;
}
//删除元素
a1.pop_back();//删除尾部
a1.erase(a1.begin());//删除头部
a1.erase(a1.begin(), a1.end());//全删
a1.clear();//全删
//此外,还有一些向量大小相关的函数
return 0;
}
c++:类模板、STL(1)
最新推荐文章于 2024-02-28 12:22:53 发布