1.string容器
C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string类,定义在头文件string。
String和c风格字符串对比:
-
Char是一个指针,String是一个类, string封装了char,管理这个字符串,是一个char*型的容器。
-
String封装了很多实用的成员方法, 例如查找find,拷贝copy,删除delete 替换replace,插入insert。
-
不用考虑内存释放和越界, string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。
2.vector容器
vector是将元素置于一个动态数组中加以管理的容器。
vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法)。
vector尾部添加或移除元素非常快速,但是在中部或头部插入元素或移除元素比较费时。
vector采用模板类实现,vector对象的默认构造形式 vector< T > vect
3.deque容器
deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容。deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front()。
使用deque容器之前必须加上deque头文件:#include < deuqe >;
deque属于std命名域的内容,因此需要通过命名限定:using std::deque;也可以直接使用全局的命名空间方式:using namespace std;
4.代码实现
//评委打分案例
//创建5个选手(姓名 得分),10个评委对5个选手进行打分
//打分规则:去掉最高分 去掉最低分 取出平均分
//按得分对5个选手进行排名
#include <iostream>
#include <string>
#include <vector>
#include <deque>
//算法头文件,demo需要用到排序算法
#include <algorithm>
using namespace std;
//创建一个选手类
class Player
{
public:
Player(string name,int sorce) {
this->mname=name;
this->msorce=sorce;