STL学习笔记-入门概念

1. 入门概念

STL最大的特点: 实现了算法和数据结构的有效分离
STL主要内容:算法(algorithm)、容器(container)、迭代器(iterator)
                        容器 -> 提供数据结构
                        算法 -> 按照实际问题,对数据进行处理
                        迭代器 -> 使得容器和算法进行无缝对接

实例感受:

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

class Student{
public:
     int age;
     char name[64];    
     void printStuInfo() {
          cout << "age : " << age << endl;
     }

};

void main() {
    //容器:将元素拷入到容器中
     vector<int> v;
     v.push_back(-1);     
     v.push_back(1);     
     v.push_back(2);     
     v.push_back(1);     
     
    //迭代器:相当于一个指针,能访问容器中的数据
     for(vector<int>::iterator it = v.begin(); it != v.end(); it++) {
         cout << *it << " ";
     }

     //算法: 统计容器中1的个数, 算法和迭代器能进行无缝的连接
     int num = count(v.begin(), v.end(), 1);
     cout << " num of 1 : " << num << endl;
         
     //容器不仅可以装基本数据类型,还可以装复杂数据类型
     Student s1, s2, s3;
     s1.age = 18;
     s2.age = 19;
     s3.age = 20;

     vector<Student *> stu;
     stu.push_back(&s1);     
     stu.push_back(&s2);     
     stu.push_back(&s3);

     for(vector<Student *>::iterator it = stu.begin(); it != stu.end(); it++) {
          cout << (*it)->age << endl;  // *it 才是 Student * 类型的
     } 
}

容器简介:
容器的分类:
序列式容器:每个元素位置固定,取决于插入的时机,与元素值无关。
                     如vector、deque、list、quene、stack、priority_quene
关联式容器:元素位置取决于特定的排序准则,和插入顺序无关。
                      如set、multiset、map、multimap
容器中的元素是按照值赋值的方式进行的,因此容器类模板的类型必须提供拷贝构造函数
容器不仅可以装基本数据类型,还可以装复杂数据类型
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章