IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 13 C++ STL 标准模板库 与 函数谓词 -> 正文阅读

[移动开发]13 C++ STL 标准模板库 与 函数谓词

Android Ndk 学习笔记(目录)

#include <iostream>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <list>

using namespace std;
void useVector(){


    vector<int> vector1  ;
    vector<int> vector2(10)  ;
    vector<int> vector3(10,0)  ;

    // vector4.begin() 迭代器 插入到前面
    // vector4.end() 迭代器 插入到后面
    vector<int> vector4  ;
    // 插入数据
    vector4.insert(vector4.begin(),10);
    vector4.insert(vector4.begin(),20);
    vector4.insert(vector4.end(),30);
    vector4.insert(vector4.end(),40);

    cout << "第一个" << vector4.front() <<endl ;
    cout << "最后一个" << vector4.back() <<endl ;

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


    for (vector<int>::iterator it = vector4.begin() ; it != vector4.end(); it++) {

        cout << "item" <<  * it <<endl ;

    }

    /*

E:\C\Project\C++\cmake-build-debug\C__.exe
第一个20
最后一个40
item0 = 20
item1 = 10
item2 = 30
item3 = 40
item20
item10
item30
item40

Process finished with exit code 0
 */

}
void useStack(){

    stack<int> stackVar;

    // 压栈(注意:stack无法指定那个位置去压栈)
    stackVar.push(30);
    stackVar.push(60);
    stackVar.push(90);

    // 内部没有重载此运算符 也没有迭代器
    // 这种方式是可以的,手枪把子弹全部打完【会把元素清空】
    while (!stackVar.empty()) {
        int top = stackVar.top(); // top == 获取栈顶的元素
        cout << "获取栈顶的元素:" << top << endl; // 永远拿 90
        stackVar.pop(); // 把栈顶的元素 弹出去  【删除】
    }

};

void useQueue(){


    queue<int> queueVar ;

    queueVar.push(20);
    queueVar.push(40);
    queueVar.push(60);

    // 第一个元素是谁 20  FIFO 原则
    cout << " 修改前: queueVar.front():" << queueVar.front() << endl;
    queueVar.front() = 88;
    cout << " 修改后: queueVar.front():" << queueVar.front() << endl;

    // 最后一个
    cout << " 修改前: queueVar.back():" << queueVar.back() << endl;
    queueVar.back() = 88;
    cout << " 修改后: queueVar.back():" << queueVar.back() << endl;

    // 内部没有重载此运算符 也没有迭代器
    // 慎用,为什么? 前面的元素全部被消费完了
    while (!queueVar.empty()) {
        cout << "while1:" << queueVar.front() << endl;
        queueVar.pop(); // 把前面的元素 给消费掉  【删除】
    }

    while (!queueVar.empty()) {
        cout << "while2:" << queueVar.front() << endl;
        queueVar.pop(); // 把前面的元素 给消费掉  【删除】
    }
}
void usePriority_queue(){
    priority_queue<int ,vector<int>, less<int>> priorityQueue;
    // priority_queue<int ,vector<int>, greater<int>> priorityQueue;

    priorityQueue.push(10);
    priorityQueue.push(20);
    priorityQueue.push(30);
    priorityQueue.push(40);
    priorityQueue.push(50);
    priorityQueue.push(60);

    cout << priorityQueue.top() << endl; // 60

    // 循环代码
    while (!priorityQueue.empty()) {
        cout << "while1:" << priorityQueue.top() << endl; // 一直是60
        priorityQueue.pop(); // 最前面的元素消费掉
    }
}

void useList(){
    list<int> listVar;

    // 插入操作
    listVar.push_front(50); // 插入到前面   明确
    listVar.push_back(60); // 插入到后面
    listVar.insert(listVar.begin(), 70); // 插入到前面  灵活
    listVar.insert(listVar.end(), 80); // 插入到后面

    // 修改操作
    listVar.back() = 88;
    listVar.front() = 55;

    // 删除
    listVar.erase(listVar.begin()); // 删除最前面的 55
    listVar.erase(listVar.end()); // 删除最后面的 88

    // list 迭代器
    // 不用通过角标去访问,也不能修改   遍历
    for (list<int>::iterator it = listVar.begin(); it != listVar.end() ; it ++) {
        cout << *it << endl;
    }
}
void useSet(){
    set<int, less<int>> setVar; //  __x < __y 从小到大,默认情况下 就是 less

    // 添加参数,不需要用迭代器,也不需要指定位置
    setVar.insert(1);
    setVar.insert(3);
    setVar.insert(2);
    setVar.insert(4);

    // 重复插入,并不会报错  std::pair<iterator, bool>
    pair<set<int, less<int>>::iterator, bool> res = setVar.insert(8);

    // res.first 获取第一个元素 迭代器   当前迭代器   最后一个位置
    // res.second 获取第二个元素 bool
    bool insert_success = res.second;
    if (insert_success) {
        cout << "恭喜你,插入成功" << endl;
        // 插入成功后,我用第一个元素遍历
        for (; res.first != setVar.end(); res.first ++) {
            cout << *res.first << endl;
        }
    } else {
        cout << "哎,插入失败.." << endl;
    }
    // 全部遍历  auto 自动推到
    for (auto it = setVar.begin(); it != setVar.end() ; it ++) {
        cout << *it << endl;
    }
}
class Person{

public:
    string name ;
    int id ;
    Person(string name ,int age ) :name(name),id(id){}

};
// C++ 都是一些常规的 谓词  不能满足功能, 模仿C++源码的谓词 自定义谓词 解决这个问题

// C++缔造者写的这个源码 没有对象比较的功能 【系统源码谓词 做不到对象比较功能】
// bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; }


struct doCompareAction{

public:

    bool operator() (const Person & p1 , const Person & p2){
        return p1.id < p2.id;
    }

};

// 谓词
void useOperator(){

    set<Person ,doCompareAction> setVar ;


    Person p1 ("p1Name",1);
    Person p2 ("p2Name",2);
    Person p3 ("p3Name",3);


    setVar.insert(p1);
    setVar.insert(p2);
    setVar.insert(p3);

    for (set<Person>::iterator  it = setVar.begin(); it != setVar.end() ; it++) {

        cout << it ->name << "--" <<it->id << endl;

    }

}
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:45:30  更:2021-07-31 16:46:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 18:59:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码