C++笔记--STL编程

Posted xiangjai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++笔记--STL编程相关的知识,希望对你有一定的参考价值。

容器

Vector

说明:

vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预

vector是一个模板类。。在使用模板类的时候,需要指明具体的类型

例如

vector<int> v1(5);  //相当于 int v1[5];

当需要使用数组的情况下,可以考虑使用vector

 特点:

 (1) 一个动态分配的数组(当数组空间内存不足时,都会执行: 分配新空间-复制元素-释放原空间);

 (2) 当删除元素时,不会释放限制的空间,所以向量容器的容量(capacity)大于向量容器的大小(size);

 (3) 对于删除或插入操作,执行效率不高,越靠后插入或删除执行效率越高;

 (4) 高效的随机访问的容器;

示例

#include "vector"

using namespace std;

int main() {

    vector<int> arr(5);
    arr.push_back(1);

    for(int i=0; i<arr.size(); i++) {
        cout << arr[i] << " ";
    }

    return 0;
}

Stacks(堆栈)

先进后出的数据结构

#include "stack"

using namespace std;

struct Teacher {
    char name[128];
    int age;
};

void testStack() {

    Teacher t1{"test1", 11};
    Teacher t2{"test2", 22};

    stack<Teacher *> teachers;
    teachers.push(&t1);
    teachers.push(&t2);

    while (!teachers.empty()) {
        Teacher *temp = teachers.top();
        cout << "teacher: " << temp->name << ", " << temp->age << endl;
        teachers.pop();
    }

}

Queues(队列)

先进先出(FIFO)的数据结构

#include "queue"

using namespace std;

void testQueue() {
    queue<int> q;
    q.push(1);
    q.push(3);
    q.push(2);

    while (!q.empty()) {
        cout << q.front() << " ";
        q.pop();
    }

}

list(双向链表)

特点:

链表,双向链表,只能顺序访问,不能使用[]进行随机访问

#include "list"

using namespace std;

void testList() {

    list<int> lists;
    lists.push_back(1);
    lists.push_back(3);

}

set/multiset

特点:

构造set集合的主要目的是为了快速检索,去重与排序

(1) set存储的是一组无重复的元素,而multiset允许存储有重复的元素;

(2) 如果要修改某一个元素值,必须先删除原有的元素,再插入新的元素

迭代器

正向迭代器

定义方法如下: 容器类名::iterator 迭代器名;

#include "list"

using namespace std;

void testList() {

    list<int> lists;
    lists.push_back(1);
    lists.push_back(3);

    list<int>::iterator iter = lists.begin();
    for(; iter != lists.end(); iter++) {
        cout << " " << (*iter);
    }

}

反向迭代器

定义方法如下:容器类名::reverse_iterator 迭代器名;

以上是关于C++笔记--STL编程的主要内容,如果未能解决你的问题,请参考以下文章

C++笔记--面向对象(OOP)编程基础--STL入门与使用

C++笔记--STL编程

STL标准库 & 范型编程学习笔记(10):hashtable深度探索

STL标准库 & 范型编程学习笔记(10):hashtable深度探索

STL标准库 & 范型编程学习笔记:dequequeuestack深度探索

STL标准库 & 范型编程学习笔记:dequequeuestack深度探索