基础概念
- 优点:高可重用性、高性能、高移植性、跨平台
- 三个重要的内容
组件 | 描述 |
---|
容器(Containers) | 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。分为关联式容器和序列式容器。 |
算法(Algorithms) | 算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。 |
迭代器(iterators) | 迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。类似于指针。 |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e35e1a99cf239099ae02f7b0f020220d.png)
The first blood
#include<iostream>
#include<vector> //动态数组
#include<algorithm> //算法
using namespace std;
//用于test01()中for_each的第三个参数
void vectorPrint01(int v)
{
cout << v << " ";
}
void test01()
{
//定义一个vector容器,指定存放int型的元素
vector<int> v;
//push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
//vector<int>::iterator 迭代器类型
vector<int>::iterator pBegin = v.begin();
vector<int>::iterator pEnd = v.end();
//STL提供的for_each算法
for_each(pBegin, pEnd, vectorPrint01); //三个参数简单理解为:头、尾、操作
}
/*******************************************************/
class Person
{
public:
Person(int age,int id):m_Age(age),m_Id(id) {};
void show()
{
cout << "Age:" << m_Age << " Id:" << m_Id << endl;
}
public:
int m_Age; //年龄
int m_Id; //编号
};
//用于test02()中for_each的第三个参数
void vectorPrint02(Person v)
{
v.show();
}
void test02()
{
//定义一个容器,存放元素类型为Person
vector<Person> v;
Person p1(10, 20), p2(30, 40), p3(50, 60);
//向容器内添加元素
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
//迭代器
vector<Person>::iterator psBegin = v.begin();
vector<Person>::iterator psEnd = v.end();
//遍历容器里面的元素的两种方法
for_each(psBegin, psEnd, vectorPrint02); //第一种:STL内置算法
for (psBegin; psBegin != psEnd; psBegin++) //第二种:常规方式
{
cout << (*psBegin).m_Age << ", " << (*psBegin).m_Id << endl;
}
}
int main()
{
test01();
test02();
return 0;
}