栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ stl库学习

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ stl库学习

//c++ stl库学习
//http://c.biancheng.net/stl/
//vector向量
#include 
#include "vector"
#include "list"
#include "map"
#include "set"
#include "stack"
using namespace std;

void learnVector(){
    //vector是动态数组,擅长在尾部插入或删除元素O(1).在容器头部或者中部插入或删除元素O(n)
    //Vector
    vector values;//此时values为空,因为没有分配内存给它
    vector primes {2,3,5,7};//初始值
    vector v(20); //初始20个0
    primes.push_back(1);
    primes.pop_back();
    primes.insert(primes.begin(),4);//在指定的位置插入一个或多个元素。
    int a = primes.at(3);//会检查是否越界
    primes.capacity();//返回当前容量
    primes.empty();
    primes.front();//返回第一个元素的引用
    primes.assign(primes.front(),4);//替换元素
    swap(values,primes);//更换容器元素
    //vector 容器可以向普通数组那样访问存储的元素,甚至对指定下标处的元素进行修改
    cout << values[0] << endl;
    primes.clear();
}

void learnList(){
    //list 双向链表容器 可以在序列已知的任何位置快速插入或删除元素(时间复杂度为O(1))
    //不支持容器对象名[6]这种语法格式
    list values;//空list
    list values1(10); //包含10个元素初值为0
    list values2(10,5);//包含10个元素初值为5
    list values3(values); // copy另一个容器
    values.sort();
    values.reverse();//反转
    values.unique();//删除相邻相同的
    values.pop_back();
    values.pop_front();
    values.push_back(1);
    values.push_front(1);
    values.remove(1);//删除值为1的结点
    auto del = values.begin();
    //迭代器右移,指向第一个元素
    ++del;
    values.erase(del);//删除迭代器指向的那个元素
    //values.remove_if(); 传入lamada表达式
    //values.splice(values.front(),values1);
}

void learnMap(){
    //关联式容器,各个键值对的键和值可以是任意数据类型,该容器会自动根据各键值对的键的大小,按照既定的规则进行排序。一般做升序排序
    map myMap;//空map
    map myMap1{{"1",1},{"2",2}};
    map newMap(myMap) ;//copy
    myMap1["1"];//重载了[]
    myMap.at("1");
    myMap.insert({"1", 2});
    myMap.count("1");//查找键为 key 的键值对的个数并返回。注意,由于 map 容器中各键值对的键的值是唯一的,因此该函数的返回值最大为 1
}

void learnSet(){
    //用户是无法做到修改 set 容器中元素的值的.和map一样,升序排列
    set myset{1,2,3,4};
    myset.insert(3);
}

void learnStack(){
    //底层使用deque
    stack myStack;

    //用list容器初始化stack
    std::list values {1, 2, 3};
    std::stack> my_stack (values);
}

void learnQueue(){

}

void learnDeque(){
    //双端队列容器,和 vector 不同的是,deque 还擅长在序列头部添加或删除元素,所耗费的时间复杂度也为常数阶O(1)
    //当需要向序列两端频繁的添加或删除元素时,应首选 deque 容器。
}
int main(){
    

    return 0;
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429977.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号