美文网首页c/c++
c++进阶——STL容器的基本介绍和基本使用

c++进阶——STL容器的基本介绍和基本使用

作者: Peakmain | 来源:发表于2019-03-03 19:13 被阅读3次

vector的基本使用

#include<vector>
using namespace std;
void main(){
    //vector
    vector<int> v;
    //插入
    //v.begin迭代器的开始的位置
    v.insert(v.begin(),12);
    v.insert(v.begin(), 22);
    v.insert(v.begin(), 2);
    //插到尾
    v.insert(v.end(), 92);
    //修改第一个位置的值
    v.front() = 102;
    //最后的数据修改
    v.back() = 93;
    //放到最后位置
    v.push_back(55);
    //移除最后一个元素
    v.pop_back();
     //通过迭代器进行移除
    v.erase(v.begin());
    //获取数据
    //若越界会崩溃
    for (int i = 0; i < v.size(); i++){
        cout << v[i] << "\t";
    }
    cout << endl;
    //若越界会抛异常
    for (int i = 0; i < v.size(); i++){
        cout << v.at(i)<<"\t";
    }
    cout << endl;
    //通过迭代器取值
    for (vector<int>::iterator it = v.begin(); it != v.end(); it++){
        cout << *it << "\t";
    }
    cout << endl;
    getchar();
}

stack容器

#include<stack>
using namespace std;
void main(){
    stack<int> s;
    //入栈
    s.push(12);
    s.push(16);
    s.push(72);
    //取出,for和迭代器都不可以
    int top =s.top();
    cout << top << endl;
    //弹出栈顶
    s.pop();
    int top = s.top();
    cout << top << endl;
    getchar();
}

队列

#include<queue>
using namespace std;
void main(){
    queue<int> q;

    //存放数据
    q.push(12);
    q.push(22);
    q.push(32);
    q.push(52);
    //修改第一个位置的值
    q.front() = 2;
    //取数据
    cout << q.front() << endl;
    //弹出
    q.pop();
    //cout << q.front() << endl;
    //最后一位数
    cout << q.back() << endl;
    //循环
    while (!q.empty()){
        cout << q.front() << endl;
        q.pop();
    }
    getchar();
}
//优先级队列
void main(){
    priority_queue<int> qq;
    qq.push(12);
    qq.push(22);
    qq.push(32);
    qq.push(52);
    //最大值
    cout << qq.top() << endl; 
    getchar();
}

list的增删改查

void main(){
    list<int>list1;
    //插入
    list1.push_front(12);
    list1.push_back(22);
    list1.insert(list1.begin(), 16);
    
    //修改
    list1.back() = 32;
    list1.front() = 2;
    //删除
    list1.erase(list1.begin());
    list1.pop_back();
    list1.pop_front();
    //不能通过角标访问或者修改
    //取值
    for (list<int>::iterator i=list1.begin(); i !=list1.end(); i++)
    {
        cout << *i << endl;
    }
    getchar();
}

set集合的使用:set会对你传入的参数进行排序,不允许元素相同

#include<functional>//因为用了greater<int>()
void main(){
    //set<int,less<int>> s;//默认是这个,就是从小到大排序
    set<int, greater<int>> s;//从大到小
    //添加参数,不需要迭代器也不需要指定位置
    s.insert(12);
    s.insert(45);
    s.insert(13);
    //重复插入不会报错
    //第一个参数,插入的位置,第二个参数是否插入成功
    pair<set<int,greater<int>>::iterator,bool> res=  s.insert(45);
    bool isSucceed=res.second;
    if (isSucceed){
        cout << "插入成功" << endl;
    }
    else{
        cout << "插入失败" << endl;
    }
    for (set<int>::iterator i = s.begin(); i != s.end(); i++)
    {
        cout << *i << endl;
    }
    getchar();
}

谓词(函数谓词):按特定的规则所编写的函数谓词

class Student{
public:
    string name;
    int grade;
public:
    Student(string name, int grade){
        this->name = name;
        this->grade = grade;
    }
};
//谓词(函数谓词):按特定的规则所编写的函数谓词
bool compare(const Student& left, const Student& right){
    return left.grade > right.grade;
}
//函数对象
struct comparefuction
{
    bool operator()(const Student& _Left, const Student& _Right) const
    {   
        return (_Left.grade > _Right.grade);
    }
};
void main(){
    set<Student, comparefuction > s;//从大到小
    Student s1("Peakmain", 5);
    Student s2("Treasure", 51);
    Student s3("Body",7);
    s.insert(s1);
    s.insert(s2);
    s.insert(s3);
    //输出
    for (set<Student>::iterator it = s.begin(); it != s.end(); it++){
        cout << it->name.c_str() << endl;
        cout << it->grade  << endl;
    }
    getchar();
}

相关文章

  • c++进阶——STL容器的基本介绍和基本使用

    vector的基本使用 stack容器 队列 list的增删改查 set集合的使用:set会对你传入的参数进行排序...

  • [C++] STL 容器

    参考:[C++] STL 容器 (一) - 基本介紹[C++] STL 容器 (二) - Iterator 部分示例:

  • C++ STL容器基本使用

    一. 顺序容器: 按顺序存储数据; 插入速度快,查找相对较慢。 vector 在最后插入数据;STLvector类...

  • 关于STL内存管理的一点琐事(上)

    前言: (前置知识:你至少使用过STL里面得一种容器,你得熟悉模板,你得熟悉c++基本语法) 以程序员使用STL的...

  • C++ STL 之 vectot(一)

    今天我们将更新 C++ STL 中 vector 容器的使用,之前我们介绍了 array 容器的使用,其实容器之间...

  • C++STL整理

    C++ STL中最基本以及最常用的类或容器string、vector、set、list、map string 处理...

  • C++ STL是什么

    STL 组件主要包括容器,迭代器、算法和仿函数。STL 基本结构和 STL 组件对应。 STL 主要由迭代器、算法...

  • 标准模板库STL

    一、STL简介 STL实现了计算机科学领域里常用的基本数据结构和基本算法; STL主要包含了容器、算法、迭代器。 ...

  • C++ STL 之 vectot(四)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 容器删除元素 使用 clear() ...

  • C++ STL 之 stack 和 queue

    本节我们将介绍 STL 中的 stack 和 queue 容器使用。 栈和队列都是极其重要的数据结构,C++ ST...

网友评论

    本文标题:c++进阶——STL容器的基本介绍和基本使用

    本文链接:https://www.haomeiwen.com/subject/pehpuqtx.html