stl
stl基础
「已注销」
这个作者很懒,什么都没留下…
展开
-
C++的string类
建议看C语言中文网的构造函数string s1(); // si = ""string s2("Hello"); // s2 = "Hello"string s3(4, 'K'); // s3 = "KKKK"string s4("12345", 1, 3); //s4 = "234",即 "12345" 的从下标 1 开始,长度为 3 的子串string对象赋值可以用 char* 类型的变量、常量,以及 char 类型的变量、常量对 string 对象进行赋值。例如:string原创 2020-05-13 22:20:09 · 149 阅读 · 0 评论 -
C++基本的容器(STL)
容器的分类顺序容器:元素在容器中不是排序的,元素的位置与元素的值无关。比如:动态数组 vector、双端队列 deque、双向链表 list关联容器:元素在容器中时排好序的,插入时不能指定位置。比如:set、multiset、map、multimap将容器一部分功能屏蔽,并增加另一部分功能即构成容器适配器容器其实是类模板。它们实例化后就成为容器类(实例化时要指定容器元素的类型),用容器类定义的对象称为容器对象。被放入容器的对象所属的类最好重载 < 和 == 比较运算符容器的类型一样原创 2020-05-16 21:09:24 · 213 阅读 · 0 评论 -
C++迭代器
迭代器是指向容器中一个元素的类似指针的东西,通过它可以读取容器中的元素容器可以进行++操作访问下一个元素举例:int main(){ vector<int> a = {1,2,3}; vector<int>::iterator i = a.begin(); while(i != a.end()){ cout<< *i << " "; i++; }}begin()方法可以返回容器的第一个元素容器适原创 2020-05-16 21:56:01 · 896 阅读 · 0 评论 -
C++结构体中运算符的重载
stl中的很多算法都需要对容器中的元素进行比较,一般进行大小比较的是 <,进行相等比较的是==重载比较运算符和C++类中的写法相似写法如下struct L{ int a,b; //结构体的初始化 L(int a,int b){ this->a = a; this->b = b; } //重载 < 运算符 bool operator <(const L l){ if(a < l.a) retur原创 2020-05-19 17:02:48 · 7118 阅读 · 0 评论 -
C++中的vector和deque
vector是顺序容器,元素的值与元素的位置无关它可以容纳很多类型的数据,可以看作是动态数组初始化vector<int> v1(10); //声明一个初始大小为10的vector,初值不确定vector<int> v2(10,1); //声明一个初始大小为10的vector,初值为1vector<int> v3(v2); //声明一个vector,并把v2的值赋予v3vector<int> v4(v2.begin(),v2.begin()+2原创 2020-06-06 20:50:56 · 950 阅读 · 0 评论 -
C++中的list
list是双向链表,与vector相比,插入删除速度较快,随机访问速度较慢每一个元素都有一个指向它前面和后面的元素的指针。list不支持根据下标随机存取访问元素。此外list的成员函数和vector支持的成员函数相似成员函数或成员函数模板作 用void push_front(const T & val)将 val 插入链表最前面void pop_front()删除链表最前面的元素void sort()将链表从小到大排序void remove (c原创 2020-06-07 17:24:51 · 206 阅读 · 0 评论 -
C++STL的pair类模板
pair也是一个类模板,需要先实例化再定义对象定义如下:template <class_Tl, class_T2>struct pair{ _T1 first; _T2 second; pair(): first(), second() {} pair(const _T1 &__a, const _T2 &__b): first(__a), second(__b) {} template <class_U1, class_U2原创 2020-06-14 09:22:42 · 169 阅读 · 0 评论 -
C++中的 set和multiset
multiset是关联容器,是排好序的集合,并且集合中的元素可以重复因为是关联容器,所以想要更改一个元素的值需要先删除再添加。类模板multiset类模板定义如下:template <class Key, class Pred = less<Key>, class B = allocator<Key> > class multiset { ...};第一个参数 Key是元素类型,第二个参数Pred是容器中元素的排序规则,可以是函数对象类也可以是函数指原创 2020-06-14 11:16:02 · 320 阅读 · 0 评论 -
C++中的 map和multimap
multimap是关联容器,每个元素都有 Key 和 Value 两个部分,并且Key可以重复。如果需要修改关键字Key需要删除再添加。不能直接修改。容器中的元素是按照Key进行排序的类模板容器模板定义如下:template < class Key, class T, class Pred = less<Key>, class A = allocator<T> >class multimap{ ... typedef pair <con原创 2020-06-14 15:09:49 · 236 阅读 · 0 评论 -
C++的STL的stack
栈是一种后进先出的元素序列,访问和删除都只能对栈顶的元素(即最后一个被加入栈的元素)进行,并且元素也只能被添加到栈顶。栈内的元素不能访问。如果一定要访问栈内的元素,只能将其上方的元素全部从栈中删除,使之变成栈顶元素才可以。stack的模板template < class T, class Cont == deque <T> >class stack{ ...};第二个参数指定实现的类型,默认是deque双端队列,也可以是vector或 list成员函数size原创 2020-06-14 19:13:52 · 274 阅读 · 0 评论 -
C++中的queue使用总结
queue是队列,是一种先进先出的数据结构定义队列的示例:queue<int> q;常见操作:q.push(i); //将i添加到队列末尾q.pop(); //弹出队列第一个元素cout<<q.front()<<endl; //返回队列第一个元素cout<<q.back()<<endl; //返回队列最后一个元素cout<<q.size(); //返回队列元素个数优先队列优先队列就是对队列原创 2020-06-07 10:35:43 · 2376 阅读 · 0 评论 -
C++的 bitset类
bitset类有若干个位,每一位都代表了一位二进制数字 0 或 1,类模板如下:template <size_t N>class bitset{ ...};实例化示例:bitset<10> bst; //实例化一个bitset对象,每一位都是0常用成员函数,这些成员函数都是进行类似位运算的操作://改变自身,使用 &=,|=,^=,<<=,>>=bitset <N> & operator &原创 2020-06-24 21:35:47 · 140 阅读 · 0 评论