精华内容
下载资源
问答
  • c++stl库

    2021-03-05 18:32:58
    c++stl解析 stl是c++提供的一种数据结构的模板,可以大大的减少编程时的代码量。stl主要分为容器,迭代器,算法三种。 迭代器指一种类似指针的结构。 下面主要介绍c++的容器与迭代器。 下面我将一一介绍各种容器以及...

    stl是c++提供的一种数据结构的模板,可以大大的减少编程时的代码量。stl主要分为容器,迭代器,算法三种。
    迭代器指一种类似指针的结构。
    下面主要介绍c

    string

    string s;
    s.find(&string);
    //找子串,如果没有返回-1,如果有返回开始坐标
    s.insert(pos,&string);
    //在pos处插入子串
    getline(cin,s);
    //向s中读入一行带有空格的字符串
    
    

    sstream库

    使用sstream将字符串按空格分割

    int main(){
    	string s="abcd efghijk lmnopqrst";
    	stringstream ss;
    	ss<<s;
    	string substr;
    	while(ss>> substr){
    		cout<< substr<<endl;
    	}
    }
    

    stack

    stack的操作函数:

    	size()  //返回栈中元素个数
        empty() //如果是空栈,返回1,否则返回0
        push() // 向栈顶插入一个元素
        top()  //返回栈顶元素
        pop()  //弹出栈顶元素
    
    

    queue

        size()
        empty() 
        push() // 向栈顶插入一个元素
        top() // 返回栈顶元素
        pop() // 弹出栈顶元素
    
    

    vector

        size()  //返回元素个数
        empty()  //返回是否为空
        clear()  //清空
        .front()/.back() //返回首/尾元素的值
        .push_back()/.pop_back()
        .begin()/.end() //返回首/尾的迭代器
        reverse(a.begin(),a.end())//反转向量
        
    
    

    map

    set/multiset

    set和multiset都是调用库。其中set不能插入相同元素,但是强行插入不会报错。multiset可以插入相同元素。

      		insert()  //插入一个数
            find()  //查找一个数,没有返回.end
            count()  //返回某一个数的个数
    1. begin()--返回指向第一个元素的迭代器
    
    2. clear()--清除所有元素
    
    3. count()--返回某个值元素的个数
    
    4. empty()--如果集合为空,返回true
    
    5. end()--返回指向最后一个元素的迭代器
    
    6. equal_range()--返回集合中与给定值相等的上下限的两个迭代器
    
    7. erase()--删除集合中的元素
    a.erase(val);//删除键值val
    
    8. find()--返回一个指向被查找到元素的迭代器
    
    9. get_allocator()--返回集合的分配器
    
    10. insert()--在集合中插入元素
    a.insert(pos,val);//在pos位置添加值val,位置不重要,因为插入后,set会自动排序
    
    11. lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
    
    12. key_comp()--返回一个用于元素间值比较的函数
    
    13. max_size()--返回集合能容纳的元素的最大限值
    例如set<int> a; a.max_size返回的就是整型的上界214748364
    
    14. rbegin()--返回指向集合中最后一个元素的反向迭代器
    
    15. rend()--返回指向集合中第一个元素的反向迭代器
    
    16. size()--集合中元素的数目
    
    17. swap()--交换两个集合变量
    
    18. upper_bound()--返回大于某个值元素的迭代器
    
    19. value_comp()--返回一个用于比较元素间的值的函数
    
    		
    
    展开全文
  • 0x00 本文参考我们在开发NDK的时候,经常需要使用C++ STL库开发,那么这些库是如何和我们的程序链接的呢?0x01 C++ STL分类注意:libstdc++.so是android源码工程下,~/android-4.2.2/bionic/libstdc++目录下的代码...

    0x00 本文参考

    我们在开发NDK的时候,经常需要使用C++ STL库开发,那么这些库是如何和我们的程序链接的呢?

    0x01 C++ STL分类

    6d4071c30aaa7be2f12128a802e43bfc.png

    注意:libstdc++.so是android源码工程下,~/android-4.2.2/bionic/libstdc++目录下的代码生成的。这个so,在手机中位于/system/lib/libstdc++.so,每个进程都会默认加载一份。可以通过cat /proc/pid/maps来查看到。

    这些静态链接库和动态链接库都位于哪呢?

    答案是位于ndkpat/sources/cxx-stl。我们截图看下这个目录:

    59c9c19a73268b2339f3ff81d0aeb5e0.png

    我们可以清晰的对照两张图。libstlport_shared.so和libstlport_static.a都在这个目录的libs/armeabi中。

    那么我们如何静态或者动态链接某个库呢?

    答案是:

    在Application.mk中,加入:APP_STL := stlport_static,表示需要静态链接libstlport_static.a。最后在工程目录libs/armeabi目录中,只会生成要编译的so,由于这个so静态链接了libstlport_static.a,所以文件的大小会比较大。

    如果加入:APP_STL := stlport_shared,表示需要动态链接libstlport_shared.so。最后在工程目录libs/armeabi目录,会生成要编译的so(体积较小,没有静态链接)和libstlport_shared.so。这两个so都会被放入/data/data/packageName/libs目录下。在使用中,需要同时System.loadlibrary两个so。

    0x02 在NDK中使用第三方库

    0x03 Android源码环境中使用stl

    stl源码位于~/android-4.2.2/external/stlport目录下。

    LOCAL_SHARED_LIBRARIES := \

    libstlport \

    LOCAL_C_INCLUDES := \

    bionic \

    external/stlport/stlport \

    bionic是需要的,里面虽然不是标准库文件,但标准库文件可能需要它。

    另外,并不是所有的STL功能都能用,只是常用的一部分。

    展开全文
  • 浅谈C++STL库

    2021-10-22 13:09:57
    熟练使用STL标准是每个C++程序员的必备技能。 C++ 标准程序发展至今,几乎所有内容都被设计为了模板的形式,STL 已经成为 C++ 程序的重要组成部分。可以这么说,如果 C++ 不支持 STL 标准模板,就无法使用...

    熟练使用STL标准库是每个C++程序员的必备技能。

    C++ 标准程序库发展至今,几乎所有内容都被设计为了模板的形式,STL 已经成为 C++ 程序库的重要组成部分。可以这么说,如果 C++ 不支持 STL 标准模板库,就无法使用程序库。

    在大多数人看来,计算机既神秘有能干,但在程序员的眼中,计算机又蠢又笨,唯一的优点就是运算速度比人快,不给指令什么都干不了,就是给指令,计算机也不能灵活运用。

    比如说,在 C++ 中,同样一个加法,不同的数据类型,要给出不同的运行代码:

    #include<iostream>
    using namespace std;
    //处理整形之间的加法
    int addInt(int m, int n) {
        return m + n;
    }
    //处理浮点类型值之间的加法
    double addDouble(double i, double j) {
        return i + j;
    }
    //......
    int main()
    {
        cout << addInt(1, 2) << endl << addDouble(1.2, 2.1);
        return 0;
    }
    

    运行结果为:

    3
    3.3
    

    像这样,对于每一种数据类型,我们都必须给计算机设计一个单独的函数,实在太繁琐了。由此可以感受到,计算机并不具备人类的基本思维,处理问题不灵活。

    为了让计算机不断接近人类的认知能力,科学家们想了很多办法,比如使用面向对象开发技术,通过类的封装和函数重载,可以部分解决上面的问题:

    #include<iostream>
    using namespace std;
    class calc {
    public:
        //处理整形之间的加法
        int add(int m, int n) {
            return m + n;
        }
        //处理浮点类型值之间的加法
        double add(double i, double j) {
            return i + j;
        }
        //......
    };
    int main()
    {
        calc a;
        cout << a.add(1, 2) << endl << a.add(1.2, 2.1);
        return 0;
    }
    

    运行结果为:

    3
    3.3
    

    创建这样的类之后,当通过类对象调用 add 方法时,就无需考虑参数的具体数据类型了。但从某种程序上来说,这也仅是让计算机聪明了一点点。

    为了让程序更加智能、人性化,经过科学家们持续的努力,C++ 引入了模板这个功能。模板可以认为是针对一个或多个尚未明确的类型而编写的一个个函数,是 C++ 的一个新特性。

    通过引入模板,C++ 引申出了泛型编程技术。简单的理解泛型编程,即使用该技术编写的代码,可以支持多种数据类型。也就是说,通过泛型编程,能编写出可重复利用的程序代码,并且其运行效率和针对某特定数据类型而设计的代码相同。由此可见,C++ 很需要泛型这种新的编程模式,可以减轻编程的工作量,增强代码的重用性。

    在 C++ 支持模板功能,引入了泛型编程思想的基础上,C++ 程序员们想编写出很多通用的针对不同数据类型的算法,其中 STL 脱颖而出成为 C++ 标准,并被引入 C++ 标准程序库。

    STL 是一个具有高度可用性、高效的模板库,该库包含了诸多在计算机科学领域中常用的基础数据结构和算法,掌握了 STL 标准,很多功能就无需自己费心费力的去实现了(不用重复的造轮子),直接拿来用即可。

    总的来说,STL 模板库是 C++ 标准程序库的重要组成部分,为 C++ 程序员提供了大量的可扩展的程序框架,高度实现了代码的可重用性,并且它是内置的,不需要额外安装,使用非常方便。

    展开全文
  • C++常用STL库详细总结

    2021-07-15 09:58:56
    C++STL库函数总结#incude< algorithm >库函数1.sort排序2.reverse倒转3.unique去重4.二分查找5.find函数查找6.字符串和整型的互换#include< vector >库函数#include< stack >堆栈库函数#include&...

    #incude< algorithm >库函数

    1.sort排序

    函数原型:sort(起始地址, 末尾地址, cmp),其中cmp是可以自己定义的函数名.

    sort(a,a+5);//默认从小到大
    sort(a,a+5,cmp);//需要自己构造函数
    sort(vec.begin(),vec.end());//vector排序
    sort(vec.begin(),vec.end(),cmp);//vector自定义构造函数排序
    

    2.reverse倒转

    函数原型:reverse(起始地址,末尾地址)。

    reverse(a,a+5);//普通数组
    reverse(vec.begin(),vec.end());//vector倒转
    

    3.unique去重

    注意:unique去重需要先用sort排序,去重后重复的元素会放在数组尾端并且缩减数组长度,需要用erase函数实现真正删除。

    sort(a,a+5);//数组
    int pos = unique(a,a+5);//unique去重返回尾地址pos
    erase(pos,a+5);//从尾地址到最后空间进行删除
    -------------------------------------------------
    sort(vec.begin(),vec.end());//vector
    int pos = unique(vec.begin(), vec.end());//unique去重返回尾地址pos
    vec.erase(pos, vec.end());//从尾地址到最后空间进行删除
    

    4.二分查找

    函数原型:
    1.lower_bound(起始地址, 末尾地址,x):查找第一个大于等于x目标值的位置
    2.upper_bound(起始地址, 末尾地址,x):查找第一个大于x目标值的位置
    3.binary_search(起始地址, 末尾地址,x):查找x是否存在于数组或vector中,找到返回true,否则返回false

    int pos1=lower_bound(a,a+5,2)-a;//数组
    int pos2=upper_bound(a,a+5,2)-a;
    int flag=binary_search(a,a+5,2);
    -----------------------------------------------------------
    int pos1=lower_bound(vec.begin(),vec.end(),2)-vec.begin();//vector
    int pos2=upper_bound(vec.begin(),vec.end(),2)-vec.begin();
    int flag=binary_search(vec.begin(),vec.end(),2);
    

    5.find函数查找

    函数原型:
    1.s1.find(s2):在s1字符串中查找s2,查找到返回第一个字符的位置,查找失败返回s1.npos,这个其实是一个数字4294967295,即s1.npos=4294967295
    2.set.find(a):查找a是否在set中,如果找不到,返回set.end()
    2.set.count(a):本来是计算a出现的次数,但是由于集合中是没有重复元素的,于是count函数也就被作为查找函数了,因为a只能出现1次或者0次,查找成功,返回1;查找失败返回0
    3.map.find():主要用于查找key是否存在map中,不存在返回map.end(),用法和set一样

    6.字符串和整型的互换

    函数原型:
    1.stoi(s):将字符串s转化成整形,s为string类型,即string --> int
    2.atoi(s):将字符串转化为整形,但s为const char类型,可以先用s.c_str()方法把string类型转化为const char类型,再转为整形,即const char --> int
    3.stringstream:需要头文件#include< sstream>,可将只含数字的字符串转化为整形,也可将数字和小数点组成的字符串转化为浮点型,即string --> int, string --> double
    4.stringstream:需要头文件#include< sstream>,可将整形或浮点型数字转化为字符串,即int --> string, double --> string
    5.to_string():可将整形转化为字符串,不推荐将浮点型转化为字符串

    7.排列组合

    next_permutation(),求当前排列的下一个全排列
    prev_permutation(),求当前排列的上一个全排列

    #include< vector >库函数

    1.vector介绍

    vector和built-in数组类似,拥有一段连续的内存空间,能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当插入较多的元素后,预留内存空间可能不够,需要重新申请一块足够大的内存并把原来的数据拷贝到新的内存空间。这些影响了vector的效率,但是实际上用的最多的还是vector容器,建议大多数时候使用vector效率一般是不错的。

    创建vector对象,vector< int > vec;
    /vector的函数部分适用于string字符串/

    2.vector的功能函数

    vec.push_back();//在vector的最后位置添加一个数据
    vec.pop_back();//去掉vector的最后一个数据 
    vec.at();//得到编号位置的数据
    vec.begin();//得到vector头的指针
    vec.end();//得到vector的最后一个单元+1的指针
    vec.front();//得到vector最前面的值
    vec.back();//得到数组的最后一个单元的引用
    vec.max_size();//得到vector最大可以是多大/ 区别与vec.size()
    vec.capacity();//当前vector分配的大小
    vec.size();//当前使用数据的大小
    vec.resize();//改变当前使用数据的大小,如果它比当前使用的大,则填充默认值
    vec.reserve();//改变当前vecotr所分配空间的大小
    vec.erase();//删除指针指向的数据项
    vec.clear();//清空当前的vector
    vec.rbegin();//将vector反转后的开始指针返回(其实就是原来的end-1)
    vec.rend();//将vector反转构的结束指针返回(其实就是原来的begin-1)
    vec.empty();//判断vector是否为空,为空返回true,否则返回false
    vec.swap();//与另一个vector交换数据
    

    #include< stack >堆栈库函数

    1.stack介绍

    堆栈是一个线性表,插入和删除只在表的一端进行。这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom)。堆栈的元素插入称为入栈,元素的删除称为出栈。由于元素的入栈和出栈总在栈顶进行,因此,堆栈是一个后进先出(Last In First Out)表,即 LIFO 表。为了严格遵循堆栈的数据后进先出原则,stack 不提供元素的任何迭代器操作,因此,stack 容器也就不会向外部提供可用的前向或反向迭代器类型。

    2.stack的函数

    创建stack对象,stack< int >s

    s.empty();//堆栈为空则返回true,否则返回false
    s.pop();//移除栈顶元素
    s.push();//在栈顶增加元素
    s.size();//返回栈中元素数目
    s.top();//返回栈顶元素
    

    #include< queue >队列库函数

    1.queue正常队列

    创建queue对象,queue< int >q

    q.push();//将元素接到队列的末端;
    q.pop();//弹出队列的第一个元素,并不会返回元素的值;
    q.front();//访问队首元素
    q.back();//访问队尾元素
    q.size();//访问队中的元素个数
    q.empty();//队列为空返回true,否则返回false
    

    2.priority_queue优先队列

    创建priority_queue对象,priority_queue< int >q;//默认大顶堆

    priority_queue <int,vector<int>,greater<int> > q;//升序队列,小顶堆
    priority_queue <int,vector<int>,less<int> >q;//降序队列,大顶堆
    

    优先队列的使用工具与队列相同,不同点在于优先队列具有自动排序功能

    #include< list >双向链表库函数

    1.list介绍

    list就是数据结构中的双向链表(根据sgi stl源代码),因此它的内存空间是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载。但由于链表的特点,它可以以很好的效率支持任意地方的删除和插入。

    2.list的函数

    list的构造函数
    创建list对象,list< int >l

    list()//声明一个空列表;
    list(n)//声明一个有n个元素的列表,每个元素都是由其默认构造函数T()构造出来的
    list(n,val)//声明一个由n个元素的列表,每个元素的值都是val得来的
    list(first,last)//声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素
    list<int> list1(10,0);//创建长度为10,每个元素的值都为0
      
    

    list的功能函数

    l.begin();//首元素地址
    l.end();//尾元素地址
    l.push_back();//插入list末端
    l.push_front();//插入list首端
    l.empty();//list为空返回true,否则返回false
    l.resize(n);//将list的长度改为n,超出的元素将被删除
    l.clear();//清空list
    l.assign(a.begin(),a.end());//将a的begin到end中的元素赋值给list
    l.swap(l2);//等同于swap(l,l2); 交换两个链表
    l.reverse();//逆置list
    l.merge(l2);//将list和l2合并并且变成升序(默认升序)
    l.merge(l2,greater<int>());//将list和l2合并并且变成降序
    l.insert(l.begin(),l2,begin(),l2.end());//list头部插入从l2开始到结尾的元素
    l.insert(l.begin(),n);//在list开始位置插入一个n
    l.insert(l.begin(),x,n);//在list开始位置插入x个n
    l.erase(l.begin());//将list第一个元素删除
    l.erase(l.begin(),l.end());//将list从begin()到end()删除
    
    //以下操作需要empty前置查看list是否为空
    
    l.front();//获取list头部元素
    l.back();//获取list最后一个元素
    //当list为空时front()和back()不会报错
    
    l.pop_back();//删除最后一个元素
    l.pop_front();//删除第一个元素
    //当list为空是调用pop_back()和pop_front()会使程序崩溃
    

    #include< deque >双向队列库函数

    1.deque介绍

    deque是一个double-ended queue,它的具体实现不太清楚,但知道它具有以下两个特点:它支持[]操作符,也就是支持随即存取,并且和vector的效率相差无几,它支持在两端的操作:push_back,push_front,pop_back,pop_front等,并且在两端操作上与list的效率也差不多。

    2.deque函数

    deque的构造函数
    创建deque对象,deque< int >d

    deque();//创建一个空deque
    deque(int nSize);//创建一个deque,元素个数为nSize
    deque(int nSize,const T& t);//创建一个deque,元素个数为nSize,且值均为t
    deque(const deque &);//复制构造函数
    

    deque的功能函数

    d.begin();//首元素地址
    d.end();//尾元素地址
    d.push_back();//插入deque末端
    d.push_front();//插入deque首端
    d.empty();//deque为空返回true,否则返回false
    d.resize(n);//将deque的长度改为n,超出的元素将被删除
    d.clear();//清空deque
    d.assign(a.begin(),a.end());//将a的begin到end中的元素赋值给deque
    d.swap(d2);//等同于swap(d,d2); 交换两个队列
    d.reverse();//逆置deque
    d.merge(d2);//将deque和d2合并并且变成升序(默认升序)
    d.merge(d2,greater<int>());//将deque和d2合并并且变成降序
    d.insert(d.begin(),d2,begin(),d2.end());//deque头部插入从d2开始到结尾的元素
    d.insert(d.begin(),n);//在deque开始位置插入一个n
    d.insert(d.begin(),x,n);//在deque开始位置插入x个n
    d.erase(d.begin());//将deque第一个元素删除
    d.erase(d.begin(),d.end());//将deque从begin()到end()删除
    
    //以下操作需要empty前置查看deque是否为空
    
    d.front();//获取deque头部元素
    d.back();//获取deque最后一个元素
    //当deque为空时front()和back()不会报错
    
    d.pop_back();//删除最后一个元素
    d.pop_front();//删除第一个元素
    //当deque为空是调用pop_back()和pop_front()会使程序崩溃
    

    #include< ctype.h>字符串判断库函数

    1.ctype介绍

    该函数库包含1.isalpha() 2.isalnum() 3.islower() 4.isupper四个函数

    2.ctype函数

    isalpha();//判断字符是否为字母,是返回1,否则返回0
    isalnum();//判断字符是否为数字或者字母,也就是说判断一个字符是否属于a~z||A~Z||0~9
    islower();//判断字符是否为小写字母,是否属于a~z
    isupper();//判断字符是否为大写字母,是否属于A~Z
    

    #include< stdlib.h>网络库函数

    1.stdlib介绍

    目前接触到有改写字符的大小写。

    2.stdlib函数

    tolower();//将字符转化为小写
    toupper();//将字符转化为大写
    

    #include< math.h>数学库函数

    1.取整函数

    ceil();//向上取整
    floor();//向下取整
    round();//四舍五入取整
    

    本文将不定期更新。。。

    展开全文
  • C++ STL库排序函数用法

    2021-08-10 15:42:20
    C++中sort函数的用法 1.sort调用 在调用前需要inlcude头文件 调用格式 sort(vector.begin(),end(),(std::greater<int>(),降序的选择参数)) sort函数需要传入三个参数。前两个为指针,分别表示排序的起始、...
  • c++STL库学习相关(一) string对象的compare()方法 在学习string基本字符系列容器的过程中,遇到了使用compare方法比较字符串的大小,这里自己碰到了一点问题,记录一下。 之前看的资料都是简单地说字符串相等返回0...
  • C++ STL库应用汇总

    2021-05-25 03:00:51
    1、std::max_element的使用 std::min_element类似,求最小 #include #include #include bool myfn( int i, int... 以上就是C++ STL库应用汇总的详细内容,更多关于C++ STL库应用集合的资料请关注脚本之家其它相关文章!
  • 学习 C++ 标准,特别是 STL,经常需要考量算法和成员函数的效能(也就是运行效率,又称复杂度),因此每个学习 STL 的读者都需要掌握一种衡量算法(或成员函数)复杂度的方法,目前最常用的方法称为大 O 表示法。...
  • */ /* 将 C++ String 转化为 C 字符数组 */ printf("%s\n", s.c_str()); /* Hello World! */ /* insert() 常见用法 */ /* insert(pos, string) */ /* pos 表插入位置, string 表插入内容 */ cout ; /* Hello World!...
  • C++ STL库用法实例

    2021-02-06 13:16:02
    你还在担心不会用auto写for循环吗? 你还在担心map不会用吗?...这道题可以作为C++ STL库的优质练手题 1.auto的循环遍历 for(auto x : range) 创建拷贝,无法修改range中的元素 for(auto& x : rang
  • 基础知识和c++stl库

    2021-01-20 20:25:53
    基础知识和c++stl库基础知识竞赛常用语言—C++时间(空间)复杂度STLSTL:C++标准模板库(Standard Template Library)STL:容器 基础知识 竞赛常用语言—C++ 绝大部分情况下用C++(效率高、code速度快),少数情况...
  • c++ stl库学习

    2021-11-03 18:27:17
    //c++ stl库学习 //http://c.biancheng.net/stl/ //vector向量 #include <iostream> #include "vector" #include "list" #include "map" #include "set" #include "stack" using namespace std; void ...
  • C++ stl库 手写 源码分析

    多人点赞 2021-08-11 20:32:44
    C++ stl库 手写前言序列式关联式容器适配器ListVector 函数dequestringstack queuebitset关联式容器 set multisetmultiset算法库仿函数 前言 stl版本 abcd,四个版本, 接口肯定是一样的 代码复用性强,效率高,通用...
  • 简介及其6大组件与13个头文件  STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这6大组件构成,其中后面... 迭代器:在C++ STL中,对容器中数据的读和写,是通过迭代器完成的,它扮演着容器和算法之间的胶
  • C++学习笔记——STL标准(九):搜索树 明天预告:set,map
  • set 简介set是STL中一种标准关联容器,其键值就是实值,实值就是键值,不可以有重复,所以我们不能通过set的迭代器来改变set的元素的值。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点...
  • //使用标准中的list list<int> v; scanf("&d", &q); for (int i = 0; i ; i++) { scanf("%s", com); if (com[0] == 'i') {//insert scanf("%d", &x); v.push_front(x); } else if (com[6] == '...
  • C++STL标准容器

    2021-11-01 21:22:23
    C++ 标准容器 标准为相关对象的存储集合提供了各种类型安全容器。容器是类模板。声明容器变量时,请指定容器将保存的元素的类型。可以使用初始值设定项列表构造容器。它们具有用于添加和删除元素以及执行其他...
  • C++STL标准学习

    2021-04-20 21:55:03
    1. STL标准 STL提供了一组表示容器,迭代器,函数对象和算法的模板。STL不是面线对象的变成,而是一种不同的编程模式——泛型编程(generic programming)。面向对象编程关注的是编程的数据方面,而泛型编程关注的...
  • c++stl库中string.length()和string.size()的坑 length()和size()的返回值都是size_t类型,也就是unsigned int,在遇到下面情况,会出现不符合你预想的情况: int main() { string str="hello world"; if (-1 <...
  • STL版本 STL六大组件 STL缺陷 STL学习阶段
  • 文章内容为侯捷老师的《C++标准与泛型编程》的学习笔记 第二讲:容器源码探索 源码之前,了无密码。 GP 编程 Containers 和 Algorithm 团队各自忙自己的事情,其间通过 Iterator 进行沟通。 Algorithm 通过 ...
  • C++ STL库--笔记

    2021-08-15 23:48:45
    1.vector: 1)unique:将相邻的重复元素放在最后面,返回不重复的最后一个元素的后面一个位置的迭代器。删除vec中的所有重复元素: sort(vec.begin(),vec.end()); vec.erase(unique(vec.begin(),vec.end()),vec.end...
  • 先进先出 使用: #include <queue> using namespace std; 1 queue的定义 queue<typename> name; 2 queue容器内元素的访问 //访问队首 q.front(); //访问队尾 q.back() ...//1....//2....//3....//4....
  • STL容器介绍及选择方式容器类型容器优缺点一 序列容器vectordequelistforward_list(C++11)queuepriority_queuestackarray二 关联容器setmultisetmapmultimap三 无序关联容器 容器类型 以前的11个容易分别是deque、...
  • sort 当然sort可以自定义排序方式,通过最后一个函数参数来实现,c++自己有几个表示逻辑关系的函数比如"greater"和"less ",同样的我们也可以用自己写的仿函数来实现这个功能。 less() "从小到大排序 () "从大到小...
  • deque 创建deque deque<T> deqT; "默认构造形式" deque(beg, end); "构造函数将[beg, end)区间中的元素拷贝给本身(beg和end都是deque的迭代器" ...d3.assign(d1.begin(), d1.end())...
  • 并且由于TreeSet是有序的,因此这四个方法的时间复杂度是O(log n) ,我认为功能实际上已经类似于C++STL的upper_bound与lower_bound方法。 例题一一Leetcode 220存在重复元素 根据题干其实很容易想到O(n^2)的朴素...
  • 4、C++ STL: stack和queue容器

    多人点赞 热门讨论 2021-11-22 10:44:34
    声明:本文是在学习C++ STL–标准模板的笔记,方便以后复习;主要参考《C++ Prime》、《C++标准》、《黑马程序员匠心之作|C++教程从0到1入门编程》等。 3.5 stack容器 3.5.1 stack 基本概念 概念:stack是一种...
  • 不定期更新C++STL库以及算法练习的笔记 分享给大家 也是督促自己不断努力学习算法与程序设计 学习算法之前,要想高效简洁的写好代码,还需要熟练掌握STL库的一些方法和数据结构 参考书籍: 《算法竞赛入门经典》...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,172
精华内容 28,468
关键字:

c++stl库

c++ 订阅
友情链接: SAM7X256-USB-ADS1.2.rar